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

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

Вывод bitmap из ресурса [D5, Win95/98]


Страницы:   1 2

sandman ©   (2001-11-20 14:42:00) 

Имеется проблема: в файле есть несколько ресурсов типа BITMAP (256 цветов). При просмотре этих картинок в Фотошопе цвета выглядят нормально, но при загрузке их в Delphi Image Editor, а также непосредственно в программу палитра "плывёт". Есть ли какой-нибудь способ побороть это?


Evgeny   (2001-11-22 14:42:00) [21]

Если я правильно понял, то процедура DrawElement выполняется из WM_PAINT.
Тогда этот кусок можно выполнить так:

BeginPaint(Handle,PS);
BitBlt(PS.DC,X,Y,Width,Height,ID_Paint_Element,deltaX,deltaY,Operation);
EndPaint(Handle,PS);


_mike   (2001-11-21 19:52:00) [22]

-=CrazyFish=-, посмотри своим опытным глазом, может я туфту тут написал? Ну не могут всего два цвета выводиться. Ну 20-30, но не два.
Посмотри, -=CrazyFish=-, будь другом. Пожалуйста.


var BitMap_MainBox: HBitMap;
var TheDC, hdc_Main_Box: HDC;
var Handle: HWND;

procedure LoadMyResourses;
begin
BitMap_MainBox:=LoadBitmap(hInstance,"MAINBOX");
TheDC:=GetDC(Handle);
hdc_Main_Box := CreateCompatibleDC(TheDC);
SelectObject(hdc_Main_Box, BitMap_MainBox);
ReleaseDC(Handle,TheDC);
end;

procedure DrawElement(X, Y, Width, Height: integer;
ID_Paint_Element:HDC; deltaX, DeltaY: integer; Operation: integer);
var PS: TPaintStruct;
begin
TheDC:=BeginPaint(Handle,PS);
BitBlt(TheDC,X,Y,Width,Height,ID_Paint_Element,deltaX,deltaY,Operation);
EndPaint(Handle,PS);
end;

procedure DrawMainBox;
begin
DrawElement(0,0,276,350,hdc_Main_Box,0,0,SrcCopy);
end;




-=CrazyFish=-   (2001-11-20 18:03:00) [23]

> _mike
ну... если на экран одновременно выводится несколько картинок с разными палитрами, а видеорежим на 256 цветов, то все легко можел поплыть.
Если кол-во цветов больше 256, то ничего сказать не могу, у меня таких проблем не возникало.


_mike   (2001-11-20 17:46:00) [24]

to CrazyFish

Всё это замечательно, но только палитра всё равно плывет. Лично у меня выводится всего 2-3 цвета (цвета монохромные, но картинка использует около 200 цветов).


-=CrazyFish=-   (2001-11-20 17:37:00) [25]

Нужно воспользоваться утилитой brcc32.exe из папки bin.
нужно создать файл RC (myResFile.rc)
прописать в нем, например:

myBitmapName1 BITMAP bitmapFile1.bmp
myBitmapName2 BITMAP bitmapFile2.bmp
myBitmapName3 BITMAP bitmapFile3.bmp

и выполнить brcc32.exe myResFile.rc

получишь myResFile.res, в котором все битмэпки будут иметь нужную палитру

Так же можно пользоваться редактором ресурсов из Visual Studio, там есть возможность подгружать нужную палитру.
Удачи.


Страницы:   1 2

Наверх

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