Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Problema s zagruskoi bitmap-ov is


Delphi 5.01 ©   (2002-08-28 18:51:00) 

Privetstvuiu vsex game makerov! Pomogite razobratsa v probleme!

U mena est tipa kod

...
var FLogoImage1 : IDirectDrawSurface7;
...
FLogoImage1:=DDLoadBitMap(FDirectDraw,"Logo1.bmp",0,0);
...
tak nujno zagrujat images v Surface no chto delat esli image-i ne faili a naxodatsa v resursovom faile, kak zagrujat bitmap ponatno no vot v DirectX kak zagruzit bitmap?

v delphi bez directa delau sleduiushee
...
var AModule: THandle;
...
AModule := LoadLibrary("button.res");
Bitmap.LoadFromResourceName(AModule,<названиекартинки1>);
FreeLibrary(AModule);
...

i fotka zagruzilas b BitMap a kak sdelat toje samoe no zafruzit fotku ne v BitMap a v "FLogoImage1"?


Delphi 5.01   (2002-08-29 13:44:00) [1]

Spasibo, togda budu shifrofat pervie 100 baitov BMP faila etogo dostatochno, chtob ego user ne smog uvidet!


Ev_genus   (2002-08-29 13:33:00) [2]

Если надо файл ресурсов хранить отдельно от исполняемого, то читай статьи Мироводина. Для такой проблемы простые ресурсные файлы не подойдут.

Нет можно только так
PrimarySurface:=DDLoadBitMap(FDirectDraw,"<названиекартинки1>",0,0);

TBitMap и IDirectDrawSurface7 - совсем разные типы. Совместимость только через блитинг одного на другой.


Delphi 5.01   (2002-08-29 13:11:00) [3]

1)
{$R buttob.res} или
{$R *.res}.

mena ne ustraivaet, v etom sluchae vso budet kompilirovatsa v odin faisl, a vot mne nujno imet res fail i kogda ponadobitsa vot togada i zagruzit, chto i delaet primer

...
var AModule: THandle;
...
AModule := LoadLibrary("button.res");
Bitmap.LoadFromResourceName(AModule,<названиекартинки1>);
FreeLibrary(AModule);
...

2)
Esli ia vas pravilno ponal to ia mogu delat sleduishe

PrimarySurface:=LoadImage(GetModuleHandle(nil), szBitmap, IMAGE_BITMAP, dx, dy, LR_CREATEDIBSECTION);

esli da to gde ima kartinki i ima faila resursov (ai dumau vi zagrujaesh iz exe faila, kak ia govoril mna eto ne ustraivaet).

3)
Est li tipa takogo
PrimarySurface.LoadFromResourceName(AModule,<названиекартинки1>);
????

4)
ili podskajite luboi logki metot skritia faila ot usera, chtob on ne mog ego otkrit i uvidet chto tam, nu i potom kak zagruzit ego v PrimarySurface!

5)
u mena est odin variant, mojno vse zashifrovat BMP file, no togda pri zapuske nujno iego, kajdi raz razshifrovivat + ia ne zastraxovan ot togo chto v etot moment user otkluchet progu i ia ne uspeu steret razshifrovoni fail!

6)
na posledok, problema teoreticheski ne trudnaia, vse delaut kak to!

Spasibo!


Ev_genus   (2002-08-29 12:42:00) [4]

Для добавления файла ресурсов к проекту нужно использовать дериктиву компилятора $R. Например:
{$R buttob.res} или
{$R *.res}.
И всё. Все ресурсы из егого файла(ов) будут доступны для чтения под теми именами, под которыми их туда запхали.

Vozmojno ia oshibaus no me kajetsa IDirectDrawSurface7 i TBitMap eto raznie tipi!

TBitMap хранит картинку вместе с свойствами. Способ хранения зависит от битрейта картинки (количества цветов)

IDirectDrawSurface7 хранит спрайт(картинка с прозрачным цветом). Его размер зависит от, установленного при инициализации DirectDraw, битрейта экрана.


Delphi 5.01   (2002-08-29 12:00:00) [5]

Vso Ok no vezde ukazivaetsa kak zagrujat v bitmap a mne nujno ne v bitmep a v PrimarySurface.
Vozmojno ia oshibaus no me kajetsa IDirectDrawSurface7 i TBitMap eto raznie tipi!
Pojaluista obiasnite esli ia oshibaus!
Spasibo!


Delphi 5.01   (2002-08-29 11:56:00) [6]

Spasibo esli budut voprosi to orashus k vam!
spasibo!


Mirovodin   (2002-08-29 10:44:00) [7]

Читай статьи :

http://delphigfx.mastak.ru/2d/014/2d_14.htmи
http://delphigfx.mastak.ru/2d/015/2d_15.htm


Delphi 5.01   (2002-08-29 08:06:00) [8]

Izveni, no ia nachinaushi i eto moia pervaia igra na drectx, ia ne sovsem ponal, bolee pravilnei ne nashol gde mne nado ukazat v procedure ima moego resursnogo faila, "buttob.res". iskrene budu blagodaren esli obiasnish.
Ogromnoie spasibo za pomosh!


Ev_genus   (2002-08-28 19:29:00) [9]

Вот этот код находится в начале DDLoadBitMap

//
// Try to load the bitmap as a resource, if that fails, try it as a file
//
hbm := LoadImage(GetModuleHandle(nil), szBitmap, IMAGE_BITMAP, dx, dy, LR_CREATEDIBSECTION);
if hbm = 0 then
begin
hbm := LoadImage(0, szBitmap, IMAGE_BITMAP, dx, dy, LR_LOADFROMFILE or LR_CREATEDIBSECTION);
end;
if hbm = 0 then
begin
Result := nil;
Exit;
end;

Закоментированная надпись гласит:"процедура пытается загрузить картинку из ресурсов, если это невозможно то из файла". Просто вместо имени файла укажи название картинки.


Наверх

Титульная страница Поиск, карта сайта Написать письмо