Canvas.Brush.style:= bsClear; //先这样设置
  Canvas.TextOut(10,10,'离奇'); //透明的“离奇”

解决方案 »

  1.   

    能做不复杂!
    Form1.Canvas.Brush.Style=bsClear;
    Form1.Canvas.TextOut(0,0,'这是个例子');
      

  2.   

    SetBkMode(Canvas.Handle,TRANSPARENT);
    然后再TextOut.也许这可以办到吧.
      

  3.   

    没这么简单,看这个:
        // 背景图中有文字的部分处理为“透明色”
        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;
      

  4.   

    感谢各位捧场,我先试一下再给分!
    另不知:
    TCanvas.TextFlags有什么用,该属性有ETO_CLIPPED,ETO_OPAQUE等值可用
      

  5.   

    to lili1(离奇):
       上午出去了,没有试。现在试了一下,各位的都正确
    ether(void)的要去掉TxtImg.TransparentMode := tmFixed;
        TxtImg.TransparentColor := $1000000;只有TBitmap有这两个属性,不过因为他的这个错误使我知道了怎么贴透明位图,实在是非常感谢。
    lili1(离奇)的最简单点。
    linkie(linkie)的也行,其实我在Vc中也用过,不过用的是控件的成员函数,myctl.SetBkMode(TRANSPARENT);没有想到这还是个Api函数,实在感谢。分少点,给各位再加一点吧!