如何解决双层Image闪烁问题?
一个面积小的Image在一个面积大的Image之上
通过拖动一个TrackBar在其OnChange事件中
对面积小的Image进行透明度处理时闪烁挺严重的
部分代码如下:
procedure TFormMain.TBAlphaChange(Sender: TObject);
var
BF: BLENDFUNCTION;
bmp: TBitmap;
begin
if (Image2.Picture.Bitmap.Empty = false) and (CBAlpha.Checked) then
begin
BF.BlendOp := AC_SRC_OVER;
BF.BlendFlags := 0;
BF.SourceConstantAlpha := Round(255*TBAlpha.Position / 100);
BF.AlphaFormat := 0;
bmp := TBitmap.Create;
bmp.Assign(Image2.Picture.Bitmap);
Image2.Picture.Assign(nil);
Windows.AlphaBlend(Image2.Canvas.Handle, 0,0,Image2.Width,Image2.Height,Bmp.Canvas.Handle, 0,0,Image2.Width, Image2.Height,BF);
bmp.Free;
end;
end;