最近要做一画图功能,由于要显示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;
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;
解决方案 »
- delphi 为什么delphi 10 lite 里找不到projects->options->release
- 用Locate可以实现sql的like '%*%'查找吗?
- 在c/s客户端取服务器上音频文件播放的问题,请有这方面设计经验的兄弟指点一下!!(项目中!)
- 主机需求
- SQl分组查询问题(所有的100分都将倾囊相送,特急)
- 谁知道怎么利用DELPHI自动生成想要的数据库啊?
- delphi的前途在哪?
- 请问那里有打包数据库程序的说明?或Installshell的使用说明?
- 完整的DCOM 配置98——2000, 2000-2000
- 这是怎么回事,请专家指教,高分等着你,谢谢!
- 求问:如何获取一个最小化界面某点的RGB值?
- TWSocketServer ICS 熟悉的进来看看
话说你画布透明的部分用来显示什么?桌面背景么?还是后面的窗体?
//ABmp.AlphaFormat := afDefined; // 开启透明
ABmp.Transparent:=true;
ABmp.TransparentColor:=clwhite;//或者黑色
看看这个对你有用不
http://www.cnblogs.com/jxsoft/archive/2011/06/02/2067714.html