|
|

楼主 |
发表于 2007-12-21 11:41:00
|
显示全部楼层
Re:[求助]alphablend算法问题.
楼上的朋友,我改了,但是还是不对呀,还报错,你帮帮我.
procedure TForm1.AlphaBlend24(BitmapDest, BitmapSrc: TBitmap; Alpha:Byte);
var
pDest, pSrc : PByteArray;
X,Y :Integer;
Beta:Integer;
begin
GetMem(pDest, SizeOf(Byte)*256);
GetMem(pSrc, SizeOf(Byte)*256);
Beta := 255 - Alpha;
for Y := 0 to BitmapDest.Height - 1 do
begin
pDest := BitmapDest.ScanLine[Y];
pSrc := BitmapSrc.ScanLine[Y];
for X := 0 to BitmapDest.Width - 1 do
begin
pDest[0]:= (pSrc[0] * Alpha + pDest[0] * Beta) div 255;
pDest[1]:= (pSrc[1] * Alpha + pDest[1] * Beta) div 255;
pDest[2]:= (pSrc[2] * Alpha + pDest[2] * Beta) div 255;
Inc(Longword(pDest) ,3); // 指向下一个像素
Inc(Longword(pSrc ) ,3);
end;
FreeMem(pDest, SizeOf(Byte)*256);
FreeMem(pSrc, SizeOf(Byte)*256);
end;
end; |
|