【问题标题】:How to draw text on TCanvas without white background under painted text?如何在绘制文本下在没有白色背景的画布上绘制文本?
【发布时间】:2013-07-30 21:01:46
【问题描述】:

我正在为我的项目编写简单的图像编辑器。

您可以在编辑器中看到图像:

在TImage上面,我放了几个TLabel。

在预览中你可以看到在图像上绘制 TLabels 的结果:

为了绘制 TLabels,我写了这段代码:

procedure TPrintForm.BuildPreview(aSsignTo: TImage);
    var
      Img: TBitmap;
      i: Integer;
    begin
      Img := TBitmap.Create;
      try
        Img.Assign(fSrcBitmap);
        for i := 0 to Count - 1 do
        begin
          Img.Canvas.Font := Items[i].Text.Font;
          Img.Canvas.TextOut(Items[i].Text.BoundsRect.TopLeft.X - Items[i].Text.Font.Size,
            Items[i].Text.BoundsRect.TopLeft.Y - Items[i].Text.Height -
            Items[i].Text.Font.Size, Items[i].Text.Caption);
        end;
        aSsignTo.Picture.Assign(Img);
      finally
        FreeAndNil(Img);
      end;
    end;

结果我有图像,其中绘制的 TLabel 在文本下有白色背景。没有它怎么画TLabel?

【问题讨论】:

    标签: delphi delphi-xe4


    【解决方案1】:
    Img.Canvas.Brush.Style := bsClear;
    

    【讨论】:

      【解决方案2】:

      感谢大家的回答。 我在这里找到了解决方案:

      SetBkMode(Img.Picture.Bitmap.Canvas.Handle,TRANSPARENT);
      

      问题已解决。

      【讨论】:

        猜你喜欢
        • 2022-10-04
        • 2015-08-07
        • 2011-10-28
        • 2017-07-27
        • 2012-03-04
        • 1970-01-01
        • 1970-01-01
        • 2019-11-26
        • 2021-10-08
        相关资源
        最近更新 更多