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

Вниз

Альфа-канал в битмапе.   Найти похожие ветки 

 
Карелин Артем ©   (2002-09-12 12:31) [0]

Итак, есть 2 битмапа. Первый 24 бита, второй 8 бит. Как бы их соеденить в 1, чтобы собственно рисунок был первым битмапом, а альфа-канал был бы получен из второго.
Можно ли в DelphiX использовать рисунки с альфа-каналом?


 
Владимир Васильев ©   (2002-09-12 12:51) [1]

Поддержка "а" каналов хорошо реализована в G32 - а также слоёв, фильтров и т.д. : http://www.g32.org/graphics32/index.html#Downloads

также рекомендую посмотреть на Graph64 - есть прозрачность и поддержка DelphiX:
http://www.graph64.netgraphics.sk/index.php?subpage=home




 
MBo ©   (2002-09-12 15:02) [2]

можно примерно так (конечно, размеры Bitmap должны быть одинаковы)

procedure MakeBmpWithAlphaChannel(b32,b24,b8:TBitmap);
type
TRGBQArray=array of TRGBQuad;
var
Info:tbitmapinfo;
Pic:TRGBQArray;
Alpha:array of byte;
i,l:Integer;
begin
l:=b24.Height*b24.Width;
SetLength(Pic,l);
SetLength(Alpha,l);
with Info.bmiHeader do begin
biWidth:=b24.Width;
biHeight:=b24.Height;
biSize:=SizeOf(TBITMAPINFOHEADER);
biCompression:=BI_RGB;
biBitCount:=32;
biPlanes:=1;
biSizeImage:=0;
end;
GetDIBits(b24.Canvas.Handle,b24.Handle,0,b24.Height,Pic,Info,DIB_RGB_COLORS);
GetBitmapBits(b8.Handle,l,Alpha);

for i:=0 to l-1 do
Pic[i].rgbReserved:=Alpha[l-i-1];
//GetDiBits укладывает пикселы с конца

SetDIBits(b32.Canvas.Handle,b32.Handle,0,b24.Height,Pic,Info,DIB_RGB_COLORS);
end;



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

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

Наверх




Память: 0.47 MB
Время: 0.014 c
3-99017
arnold
2002-12-11 08:58
2002.12.30
Сравнение двух DBF


14-99255
Yury
2002-12-11 08:49
2002.12.30
PDF -> Word


14-99316
Dyha
2002-12-10 12:13
2002.12.30
BiOS


14-99290
Игорь Шевченко
2002-11-28 14:58
2002.12.30
---|Ветка была без названия|---


1-99048
Balkon
2002-12-19 11:47
2002.12.30
SHBrowseForFolder и кнопарь New