7

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

在那里你可以在编辑器中看到图像:

在此处输入图像描述

在 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?

4

2 回答 2

21
Img.Canvas.Brush.Style := bsClear;
于 2013-07-30T21:26:15.227 回答
5

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

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

问题已解决。

于 2013-07-31T09:54:25.890 回答