如何在canvas上用透明色填充一个矩形区域

csdn_tw 2006-02-28 05:32:13
如题
...全文
358 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
lqcros 2006-04-06
  • 打赏
  • 举报
回复
毛了,如果要用透明,你就不填哪个区域三
毛了,如果要用透明,你就不填哪个区域三
毛了,如果要用透明,你就不填哪个区域三
happyct 2006-04-06
  • 打赏
  • 举报
回复
如果你只需要修改图片的某部分,那么你把这一部分的图形分割下来处理,完毕再整合上去(没让你用手工分割整合!)
happyct 2006-04-06
  • 打赏
  • 举报
回复
所谓透明,其实不过是把图片用某一色系进行转换而已,给你一段转换代码,但具体怎样看起来更象透明,你就试着调整一下参数(注,其实,看起来透明的图形,是一种颜色体系不出来的,和我前面说的有点矛盾)

type
PRGBArray = ^TRGBArray;
TRGBArray = array [0..MaxPixelCount - 1] of TRGBTriple;

procedure Convert2TargetColor(bmp: TBitmap; targetColor: TColor);
var
i, j: Integer;
Row: PRGBArray;
R,G,B: Byte;
begin
R := GetRValue(ColorToRGB(targetColor));
G := GetGValue(ColorToRGB(targetColor));
B := GetBValue(ColorToRGB(targetColor));
for i := 0 to Bmp.Height - 1 do
begin
Row := Bmp.Scanline[i];
for j := 0 to Bmp.Width - 1 do
begin
Row[j].rgbtRed := 255 - (255 - Row[j].rgbtRed) * (255 - R) div 255;
Row[j].rgbtGreen := 255 - (255 - Row[j].rgbtGreen) * (255 - G) div 255;
Row[j].rgbtBlue := 255 - (255 - Row[j].rgbtBlue) * (255 - B) div 255;
end;
end;
Bmp.Canvas.Refresh;
end;

1,183

社区成员

发帖
与我相关
我的任务
社区描述
Delphi GAME,图形处理/多媒体
社区管理员
  • GAME,图形处理/多媒体社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧