![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Вывод bitmap из ресурса [D5, Win95/98]
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, там есть возможность подгружать нужную палитру.
Удачи.