Форум: "Media";
Текущий архив: 2002.12.30;
Скачать: [xml.tar.bz2];
ВнизАльфа-канал в битмапе. Найти похожие ветки
← →
Карелин Артем (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 вся ветка
Форум: "Media";
Текущий архив: 2002.12.30;
Скачать: [xml.tar.bz2];
Память: 0.44 MB
Время: 0.049 c