首页  编辑  

TextOut输出时的透明问题

Tags: /超级猛料/Picture.图形图像编程/控件和绘图/   Date Created:

回复人: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函数,实在感谢。

分少点,给各位再加一点吧!