我用Canvase.Brash作了个颜色渐进的类似标题栏的区域。可是用Canvase.textout方法在上面写字的时候,确总是会覆盖背景的色彩。请问哪位大侠知道如何解决?不改变背景颜色渐进的彩色效果?不胜感激。

解决方案 »

  1.   

    SetBkMode(Canvas.Handle, TRANSPARENT);
    或者:
    Canvas.Brush.Style := bsClear;
      

  2.   

    这个太简单了,不值100分。算了写个函数方便一下:
    procedure TransTextOut(Ca:TCanvas;X,Y:Integer;Text:String);
    var
      bs:TBrushStyle;
    begin
      with Ca do
      begin
        bs:=Brush.Style;
        Brush.Style:=bsClear;
        TextOut(X,Y,Text);
        Brush.Style:=bs;
      end;
    end;
      

  3.   

    procedure TransTextOut(Ca:TCanvas;X,Y:Integer;Text:String);
    var
      bs:TBrushStyle;
    begin
      with Ca do
      begin
        bs:=Brush.Style;
        Brush.Style:=bsClear;
        TextOut(X,Y,Text);
        Brush.Style:=bs;
      end;
    end;
    我也觉得好可惜,晚喽晚喽。
      

  4.   

    关键是设置Brush的Style属性:    canvas.Brush.Style:=bsClear;
      

  5.   

    谢谢大家,用SetBkMode(Canvas.Handle,  TRANSPARENT);可以实现