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

Вниз

TDirectDrawSurface из DelphiX   Найти похожие ветки 

 
ПсихЪ ©   (2004-03-09 02:00) [0]

Пишу спрайтовый движок. Решил использовать для отображения DelphiX. Написал класс для работы с потоками. В файл пишется потоком битмэп. Затем загружаю его в TGraphic. А из него загружаю на поверхность с помощью TDirectDrawSurface.LoadFromGraphic. Но возникает проблема обратного сохранения с поверхности в файл. Желательно для начала сохранить содержимое в TGraphic а затем уже в файл. Хотя можно было бы сразу отправить в поток. Но в классе TDirectDraw нет процедур сохранения, как то, SaveToFile, SaveToGraphic и SaveToStream. Как быть в этом случае?


 
KilkennyCat ©   (2004-03-09 02:16) [1]

Вообще-то, может это как раз из-за использования ДелфиИкс... не знаю. Я его сразу бросил, увидев разницу между непосредственным обращением к библиотекам директикса и этим компонентом. При нормальной работе (без делфиикса) я могу без проблем сохранить весь экран, кусок экрана или вторичной поверхности...


 
ПсихЪ ©   (2004-03-09 02:42) [2]

Просто используя DelphiX очень быстро можно создавать тулзы для движка. Например редактор игровых сцен, персонажей, спрайтов. Сначала я юзал стандартный TDXimageList. С его помощью можно было и выводить графику и сохранять её в файл, но это оказалось в последствии не удобно для отдельного использования спрйтового класс в других прогах. Поэтому решил от него отказаться в пользу TDirectDrawSurface, на котором он основан. Осталось только разобраться с сохранением в TGraphic. Расскажи поподробнее про то, как ты сохранял обычный IDDrawSurface(2,4,7) в файл или TBitmap. Может это мне чем-нибудь поможет...


 
cyborg ©   (2004-03-09 09:06) [3]


Var
 hRet : Cardinal;
 desc : TDDSURFACEDESC2;
...
 FillChar(ddsd,SizeOf(ddsd),0);
 desc.dwSize:=SizeOf(desc);
 hRet := Surface.Lock(nil, desc, DDLOCK_WAIT, 0);
 desc.lpSurface - адрес графических данных, можно читать оттуда и писать туда
 hRet:=Surface.Unlock(nil);

Учитывай разряд цвета и ширину поверхности



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

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

Наверх





Память: 0.45 MB
Время: 0.032 c
14-1083704296
11111ffghfghfg
2004-05-05 00:58
2004.05.23
Зачем разработчики Делфи сделали TDAtaSource?


3-1083074733
Twilight
2004-04-27 18:05
2004.05.23
Не работает, без делфи.


3-1082795753
Сказочник
2004-04-24 12:35
2004.05.23
Почему не работает count(*)


14-1083237452
SPeller
2004-04-29 15:17
2004.05.23
Как заработать денег?


9-1073681926
Ракал
2004-01-09 23:58
2004.05.23
Как работать с Direct sound





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский