| 
| 
 | Вопрос # 4 790/ вопрос открыт / | 
 |  Доброго времени суток, уважаемые эксперты!Разбираюсь с DirectX в C#, пример взял из интернета. Создал класс (приложение), во время выполнения InitGraphics(), появляется ошибка, при рисовании формы вызывается метод PaintDx и тоже появляется ошибка: "В экземпляре объекта не задана ссылка на объект". Работаю в системе Windows XP, на Vist'е все работает.
 Приложение:Переключить в обычный режим     public class MyDirX    {        private Device dev = null;        public Form Prnt = null;         public void InitGraphics()        {            try            {                PresentParameters presParam = new PresentParameters();                presParam.Windowed = true;                presParam.SwapEffect = SwapEffect.Discard;                presParam.EnableAutoDepthStencil = true;                presParam.AutoDepthStencilFormat = DepthFormat.D16;                dev = new Device(0, DeviceType.Hardware, Prnt, CreateFlags.SoftwareVertexProcessing,
presParam);            }            catch (Exception ex)            {                MessageBox.Show(ex.Message);            }         }         public void PaintDx()        {            try            {                dev.Clear(ClearFlags.Target, Color.Black, 1.0f, 0);                 CustomVertex.TransformedColored[] verts = new CustomVertex.TransformedColored[3];                verts[0].Position = (new Vector4(Prnt.Width / 2.0f, 50.0f, 0.5f, 1.0f));                verts[0].Color = System.Drawing.Color.Red.ToArgb();                verts[1].Position = (new Vector4(Prnt.Width - (Prnt.Width / 5.0f), Prnt.Height -
(Prnt.Height / 5.0f), 0.5f, 1.0f));                verts[1].Color = System.Drawing.Color.Yellow.ToArgb();                verts[2].Position = (new Vector4(Prnt.Width / 5.0f, Prnt.Height - (Prnt.Height /
5.0f), 0.5f, 1.0f));                verts[2].Color = System.Drawing.Color.Green.ToArgb();                 dev.BeginScene();                dev.VertexFormat = CustomVertex.TransformedColored.Format;                dev.DrawUserPrimitives(PrimitiveType.TriangleList, 1, verts);                dev.EndScene();                dev.Present();                Prnt.Invalidate();            }            catch (Exception ex)            {                MessageBox.Show(ex.Message);            }        }    }
Примечание #1 (6 декабря 2010, 21:12): Делаю на Managed DirectX с использованием Microsoft.DirectX и Microsoft.DirectX.Direct3D 
 
|  |   Вопрос задал: Евгений Eklmn (статус: Посетитель)Вопрос отправлен: 6 декабря 2010, 21:05
 Состояние вопроса: открыт, ответов: 1.
 |  Ответ #1. Отвечает эксперт: AlexMPEI Здравствуйте, Трофимов Евгений!А где создание экземпляра Form Prnt?? мне кажется поэтому и ошибки
 
|  | Ответ отправил: AlexMPEI (статус: 1-ый класс)Время отправки: 6 декабря 2010, 23:13
 
 |  
 Мини-форум вопросаВсего сообщений: 4; последнее сообщение — 11 декабря 2010, 17:55; участников в обсуждении: 3. 
|   | AlexMPEI (статус: 1-ый класс), 6 декабря 2010, 23:22 [#1]:видимо фишка - ответ прямо из письма не работает - я вижу что-то совершенно нечитаемое. + почему не сделать автологин, когда я перехожу по ссылке из присланного мне письма, нажав переход на страницу мини форума???
 
 Теперь собственно ответ: где создание экземпляра Form Prnt?? Мне кажется в этом ошибка. посмотри в дебагере на какой строке вылетает и какое состояние переменных при этом.
 |  
|   | Ерёмин А.А. (статус: *Администратор), 7 декабря 2010, 09:32 [#2]:AlexMPEI: смотря через что отправлять. Письма в win-1251, так что посылать ответ в юникоде браузер никто не просил. 
 А вообще, все замечания и предложения оставляйте на форуме.
 |  
|   | Евгений Eklmn (статус: Посетитель), 7 декабря 2010, 19:05 [#3]:Да все инициализировано, вроде. Вот код процедуры создания главной формы, в нем и задается Prnt 
         public DxForm()
        {
            InitializeComponent();
            this.SetStyle(ControlStyles.Opaque | ControlStyles.AllPaintingInWmPaint, true);
            this.UpdateStyles();
            dx = new MyDirX();
            dx.Prnt = this;
            dx.InitGraphics();
        }DirectX самый новый(версия 9.0с) - через DirectX WedInstall проверял. Вылетает на 15 строке.Генерация случайных чисел - слишком важный вопрос, чтобы оставлять его на волю случая. (Роберт Ковзю, Окриджская лаборатория) |  
|   | Евгений Eklmn (статус: Посетитель), 11 декабря 2010, 17:55 [#4]:Разобрался проблема, все же была в DirectX. Пришлось переустановить его. Генерация случайных чисел - слишком важный вопрос, чтобы оставлять его на волю случая. (Роберт Ковзю, Окриджская лаборатория) |  Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте. |