Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Media";
Текущий архив: 2003.11.27;
Скачать: [xml.tar.bz2];

Вниз

Небольшой и, должно быть, лёгкий вопросик по DelphiX   Найти похожие ветки 

 
JohnJ   (2003-07-30 01:17) [0]

Мастера! Помогите пожалуйста! Изучаю сам DelphiX, и вот что делаю:
Кидаю на форму DXDraw и DXImageList. В DXImageList1 в свойстве DXDraw выбираю DXDraw1, а в свойство Items добавляю одну картинку. В DXDraw1 ставлю Align в alClient. И в процедуре TForm1.OnCreate пишу следующее:
DXImageList1.Items[0].Draw(DXDraw1.Surface,1,1,0);
Не рисует картинку... Почему? Вся форма просто чёрным закрашивается.


 
A_n_t   (2003-07-30 05:19) [1]

Возьми штатный пример из компонентов DelphiX, там все просто и понятно.


 
iXuSs   (2003-07-30 12:11) [2]

Не в OnCreate надо, а в OnShow формы или в OnActivate TDXDraw. При этом не забывай про TDXDraw.Flip, иначе ничего не увидишь.


 
JohnJ   (2003-07-31 01:02) [3]

A_n_t: В том то и проблемма! Есть у меня такой пример, и описание как сделать... Пример работает, а когда я сам делал всё как там написано - комп вис!!! Когда я сверил все строчки - всё абсолютно идентично... Значит я где-то в свойствах что-то не то сделал? Вот и решил попробовать просто - вывести картнику... Комп не завис, но картинки всё-равно нет! :( Помоги, плиз!
iXuSs: Сделал так: Дописал перед выводом картинки строчку DXDraw1.Flip; Проверил - ничё нового. Тогда добавил на форму кнопку Button1, и на событие OnClick поставил процедуру FormCreate (сделал это в Object Inspector, а не динамически (это я чтобы лишние вопросы отмести)). Запускаю... Чёрная форма... Нажимаю один раз на кнопку - чёрная форма... Нажимаю ещё раз на кнопку - появляется картинка! В чём может быть причина, даже понятия не имею, объясните, плиз, и как этого избегать?


 
A_n_t   (2003-07-31 01:23) [4]

Немного теории:
При обычной работе с графикой используется в памяти 2 surface(картинки):
1 – backbuffer
2 - primary
Видео карта постоянно с частотой монитора показывает primary,
а рисование новой графики происходит в backbuffer.

И самое главное: процедура DXDraw1.Flip меняет местами backbuffer и primary, то есть теперь показывается, то что нарисовали в backbuffer.

Поэтому DXDraw1.Flip необходимо ставить не перед рисованием картинки, а после.


 
JohnJ   (2003-07-31 01:44) [5]

Ну вот! Теперь с первого нажатия на кнопку рисуется! :) Остаётся последний вопрос: А почему при создании формы не хочет???


 
JohnJ   (2003-07-31 01:48) [6]

Кстати, спасибо A_n_t за теорию и iXuSs за "наталкивание" на Flip


 
A_n_t   (2003-07-31 07:29) [7]

Если я правильно понимаю, то при создании формы происходит и инициализация DXDraw1, то есть создается все необходимое для работы с DirectX, поэтому и не рисует.


 
iXuSs   (2003-07-31 22:10) [8]

> А почему при создании формы не хочет???

A_n_t правильно сказал. Раньше, чем TDXDraw.OnInitialize лучше вообще с ним ничего не делай.

Вот ещё на всякий случай ньанс. Если будешь использовать TDXTimer, не перепутай OnActivate и OnTimer - а то в простом таймере есть только OnTimer, а я машинально делаю двойной щелчок и порой не замечаю, что обрабатываю не то дело.


 
JohnJ   (2003-08-02 01:21) [9]

Написал перед выводом на DXDraw1 картинки строчку DXDraw1.Initialize, и заработало!!! Спасибо! Теперь буду думать почему в моём "большом" проекте (игрушку пишу) всё-равно не работает, хотя как-то раз работало, а потом я решил чё-то изменить, и перестало работать... Вернул обратно - никакого эффекта... Ладно, пойду думать...


 
iXuSs   (2003-08-02 20:13) [10]

Давай, если что - то спрашивай, только побольше кода, так легче понять.



Страницы: 1 вся ветка

Форум: "Media";
Текущий архив: 2003.11.27;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.009 c
14-90064
Гость
2003-11-05 16:17
2003.11.27
Как определить по номеру, какой это процессор


3-89685
St@syan
2003-11-06 11:55
2003.11.27
Как сделать


3-89686
bober
2003-11-07 16:52
2003.11.27
dbtext


1-89988
Nikos
2003-11-18 09:15
2003.11.27
Разрыв связи с файловой переменной.


6-90018
MakNik
2003-10-03 11:25
2003.11.27
Socket





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский