2013-07-30 27 views
6

我正在为我的项目编写简单的图像编辑器。如何在彩色文本下绘制TCanvas上没有白色背景的文本?

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

enter image description here

以上的TImage,我把几的TLabel。

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

enter image description here

绘制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; 

至于结果,我有图像,其中drawed的TLabel有文本下的白色背景。如何在没有它的情况下绘制TLabel?

回答

4

感谢所有的答案。 我发现这里的解决方案:

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

问题解决。

15
Img.Canvas.Brush.Style := bsClear; 
相关问题