急啊!关于TBitmap开启透明后,Canvas颜色变浅问题,能恢复正常吗?
洒车 2012-01-09 04:43:53 最近要做一画图功能,由于要显示PNG透明的图片所以要使用TBitmap作为画布,但发现TBitmap开启透明后Canvas所画出的颜色变浅了,比如红色变成了粉红,请各位大神帮帮忙,如何才能使颜色恢复正常。(难道有Alpha颜色或Alpha透明度影响)
procedure TForm1.Button1Click(Sender: TObject);
var
ABmp: TBitmap;
begin
ABmp := TBitmap.Create;
try
ABmp.PixelFormat := pf32bit; // 设置ABmp格式为32位
ABmp.AlphaFormat := afDefined; // 开启透明
ABmp.SetSize(500, 500);
ABmp.Canvas.Brush.Color := 0;
ABmp.Canvas.FillRect(ABmp.Canvas.ClipRect); // 这两行为把画布设置为透明
ABmp.Canvas.Font.Color := clRed; // 设置Canvas字体颜色为红色
ABmp.Canvas.TextOut(0, 0, '我的电脑'); // 画字体
PaintBox1.Canvas.Draw(0, 0, ABmp); // 显示ABmp图片
finally;
ABmp.Free;
end;
end;