回复人:lili1(离奇) (2001-3-9 12:54:00) 得0分
Canvas.Brush.style:= bsClear; //先这样设置
Canvas.TextOut(10,10,'离奇'); //透明的"离奇"
回复人:BCB(yzbcb@china.com) (2001-3-9 12:56:00) 得0分
能做不复杂!
Form1.Canvas.Brush.Style=bsClear;
Form1.Canvas.TextOut(0,0,'这是个例子');
回复人:linkie(linkie) (2001-3-9 12:58:00) 得0分
SetBkMode(Canvas.Handle,TRANSPARENT);
然后再TextOut.也许这可以办到吧.
回复人:BCB(yzbcb@china.com) (2001-3-9 13:03:00) 得0分
楼上的老兄,平时也是用C++吧,
你的注释是C的
回复人:ether(void) (2001-3-9 17:12:00) 得0分
没这么简单,看这个:
// 背景图中有文字的部分处理为"透明色"
TxtImg.Transparent := true;
TxtImg.TransparentMode := tmFixed;
TxtImg.TransparentColor := $1000000;
with TxtImg.Canvas do
begin
Brush.Color := $1000000; // 文字的背景色(前面定义的透明色)
Brush.Style := bsClear;
Rectangle(0, 0, MaxInt, MaxInt);
Font.Color := clRed; // 文字前景色
Font.Size := FontSize;
Font.Name := FontName;
TextOut(x, y, '透明字');
end;
回复人:lz_0618(lz_0618) (2001-3-10 8:10:00) 得0分
感谢各位捧场,我先试一下再给分!
另不知:
TCanvas.TextFlags有什么用,该属性有ETO_CLIPPED,ETO_OPAQUE。。。等值可用
回复人:lili1(离奇) (2001-3-10 12:04:00) 得0分
lz_0618
解决了吗?
回复人:lz_0618(lz_0618) (2001-3-10 13:13:00) 得0分
to lili1(离奇):
上午出去了,没有试。
现在试了一下,各位的都正确
ether(void)的要去掉TxtImg.TransparentMode := tmFixed;
TxtImg.TransparentColor := $1000000;只有TBitmap有这两个属性,不过因为他的这个错误使我知道了怎么贴透明位图,实在是非常感谢。
lili1(离奇)的最简单点。
linkie(linkie)的也行,其实我在Vc中也用过,不过用的是控件的成员函数,myctl.SetBkMode(TRANSPARENT);没有想到这还是个Api函数,实在感谢。
分少点,给各位再加一点吧!