Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.06.29;
Скачать: CL | DM;

Вниз

TDXImageList   Найти похожие ветки 

 
Green_Templar ©   (2005-03-20 02:41) [0]

Нужно загрузить растр в TDXImageList после запуска программы. Гружу dximagelist1.items[].picture.bitmap.loadfromfile(), но после этого растр всё равно не рисуется dximagelist.items[].draw(). Удалось устранить проблему, добавив строчку dxdraw1.finalize;dxdraw1.initialize; Но ведь это слишком тормозно так делать! Может есть какой другой способ делать рисовабельными картинки, загруженные после запуска программы (после инициализации дхдрова)?


 
kruel   (2005-03-20 15:00) [1]

DXImageList1.Items.Restore


 
Green_Templar ©   (2005-03-20 15:38) [2]

Спасибо огромное, Kruel!
Вот ещё идея появилась: а что если для того, чтобы нарисовать спрайт, использовать не form1.dximagelist1.items[0].draw, а взять адрес p:=@form1.dximagelist1.items[0], а потом p^.draw? Но какой тип должен быть у указателя p? p:^tdximagelist.items ему не нравится, а брать p:^tdximagelist нет толку.


 
Kruel   (2005-03-20 16:06) [3]

А зачем через адреса? Я так понимаю, нужна просто именованная ссылка на tdximagelist.item, чтоб его нарисовать. Укажи какой класс через TPictureCollectionItem():

var p:Pointer;
...
p:=form1.dximagelist1.items[0]
TPictureCollectionItem(p).Draw(DXDraw.Surface,0,0,0);


 
Green_Templar ©   (2005-03-20 21:09) [4]

Вообще-то нужно нарисовать спрайт из имэджлиста как можно быстрее. Я так понимаю, что если мы пишем
p:=form1.dximagelist1.items[0]
TPictureCollectionItem(p).Draw(DXDraw.Surface,0,0,0);
что, как я понимаю, то же самое что form1.dximagelist1.items[0].draw();
то оно каждый раз при рисовании будет сначала находить айтэм №0, а потом рисовать, а я хочу чтобы оно его сразу рисовало :) ! На моём Celeron633 и i810 video приходится бороться за каждый фрэйм :)


 
Green_Templar ©   (2005-03-21 22:24) [5]

Помогите, пожалуйста!!!


 
Omar2002 ©   (2005-03-23 10:46) [6]

DXDraw1.Flip;


 
Omar2002 ©   (2005-03-23 10:49) [7]

никаких dxdraw1.initialize не надо, нужно просто свойство DXDraw компонента DXImageList установить DXDraw1, ну или как он там у тя называется.


 
Green_Templar ©   (2005-03-23 21:31) [8]

Omar2002, вы меня не поняли.
Нужно не просто нарисовать form1.dximagelist1.items[0], а сделать это самым быстрым способом, как удачно грузить растры я уже понял.


 
A22 ©   (2005-03-24 18:21) [9]

DirectDraw вообще имеет слабое отношение к самым быстрым способам :(
хотя, если нет вариантов, плюнь на все эти ссылки и т.д. и переведи свои картинки в адаптивную палитру. bmp 256 цветов все же будет быстрее на экран выводиться из-за меньшего объема копируемой памяти


 
Green_Templar ©   (2005-03-26 01:27) [10]

А как это сделать? Тупо в пэйнте поменять атрибуты рисунка? Там палитра портится.


 
Omar2002 ©   (2005-03-27 11:40) [11]

нет, в пэйнте не надо. лучше в фотошопе, там можно сохранить локальную палитру рисунка, тогда он максимально будет похож на свой 16 битовый оригинал.



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

Текущий архив: 2005.06.29;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.033 c
1-1118017641
dp200
2005-06-06 04:27
2005.06.29
OpenDialog , открытие нескольких файлов


4-1115201596
balamutik
2005-05-04 14:13
2005.06.29
Получение текста из адресной строки explorera


11-1101104807
Solo
2004-11-22 09:26
2005.06.29
StringVar + RichEdit.Selection+ StringVar2


4-1114784588
Виталик
2005-04-29 18:23
2005.06.29
Соответствие классов в Delphi и Си


4-1115265581
lokid7
2005-05-05 07:59
2005.06.29
CM_MOUSEENTER и WM_PAINT