如何使一张图片上的一种颜色(比如白色)透明不显示出来(100分)

  • 主题发起人 主题发起人 fxb
  • 开始时间 开始时间
F

fxb

Unregistered / Unconfirmed
GUEST, unregistred user!
如何使一张图片上的一种颜色(比如白色)透明不显示出来
 
不用API的方法,用Timage和Timagelist实现
procedure TForm1.FormCreate(Sender: TObject);
begin
Image1.Transparent:= true;
ImageList1.Draw(Image1.Canvas, 0, 0, 0);
end;
 
關于位圖的透明顯示﹐首先要獲得原位圖的掩碼位圖﹐即﹐要顯示的部分變為黑﹐要透明的變
為白﹐再與背景位圖AND﹐再將掩碼位圖取反﹐再與圖案位圖AND﹐最后把此位圖與背景位圖
OR操作﹐就好了。。。好麻煩的說
 
Delphi自带的源程序中有, 比如TSpeedButton处理Glyph, TImage的Transperant属性
处理Glyph背景是取得左上角的颜色作为背景颜色,然后屏蔽掉这个颜色. 你可以把你特指
的颜色用相同的方法屏蔽掉
 
看到了吧:位图有一个属性TransparentColor
pBitmap- >TransparentColor=
pBitmap- > Canvas- >Pixels[2][2];
这是以以位图[2][2]处的象素的颜色为透明色。
 
》wql:
具体如何做呀比如OR操作?
 
TransparentColor属性我怎么找不到?
 
用函数BrushCopy
Canvas.BrushCopy(MyRect, Bitmap, MyRect, Transparentcolor);
MyRect:图片所在的区域:Rect(x0,y0,x1,y1 )
Bitmap:属性为TBitmap
Transparentcolor:透明色

 
在TBitmap中有这样的属性:
* Transparent
指定位图是否为透明模式(true/false),这时某种颜色将不被绘制 从而可以
看到其背面的图画。透明色取决于TransparentMode和TransparentColor的设置
* TransparentMode
---------------------------------------------------------
取 值 | 意 义
---------------------------------------------------------
tmAuto | 透明色为Bitmap左下角象素的颜色
---------------------------------------------------------
tmFixed | 透明色为TransparentColor中指定的颜色
---------------------------------------------------------
* TransparentColor
当TransparentMode设为tmFixed时(设为tmAuto时,不管它)
你可以写 *.bitmap.TransparentColor := clBlue; //指定蓝色为透明色
 
最简最有效方法:把图片左下角(即坐标[0,height])的颜色定义为白色,然后把该image
的Transparent设为True,答案出来了,如果定义该点为红色,则透明色为红色,明白了吗?
 
多人接受答案了。
 
后退
顶部