Delphi 如何在彩绘文本下无白色背景的TCanvas上绘制文本?
我正在为我的项目编写简单的图像编辑器 在编辑器中可以看到图像: 在TImage的上方,我放置了几个TLabel 在预览中,您可以看到在图像上绘制标签的结果: 对于绘制TLabel,我编写了以下代码:Delphi 如何在彩绘文本下无白色背景的TCanvas上绘制文本?,delphi,delphi-xe4,Delphi,Delphi Xe4,我正在为我的项目编写简单的图像编辑器 在编辑器中可以看到图像: 在TImage的上方,我放置了几个TLabel 在预览中,您可以看到在图像上绘制标签的结果: 对于绘制TLabel,我编写了以下代码: procedure TPrintForm.BuildPreview(aSsignTo: TImage); var Img: TBitmap; i: Integer; begin Img := TBitmap.Create; try
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?感谢大家的解答。
Img.Canvas.Brush.Style := bsClear;
我在这里找到了解决方案:
SetBkMode(Img.Picture.Bitmap.Canvas.Handle,TRANSPARENT);
问题解决了