2013-07-30 28 views
6

Tôi đang viết trình chỉnh sửa hình ảnh đơn giản cho dự án của mình.Làm thế nào để vẽ văn bản trên TCanvas mà không có nền màu trắng dưới văn bản sơn?

Có bạn sẽ nhìn thấy hình ảnh trong trình soạn thảo:

enter image description here

Trên TImage, tôi đặt vài TLabel.

Trong preview bạn có thể xem kết quả của bản vẽ TLabels trên hình ảnh:

enter image description here

Đối với bản vẽ TLabels tôi đã viết mã này:

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; 

Kết quả tôi có hình ảnh, nơi drawed TLabel có nền màu trắng dưới văn bản. Làm thế nào để vẽ TLabel mà không có nó?

Trả lời

4

Cảm ơn tất cả các câu trả lời. Tôi đã tìm thấy giải pháp tại đây:

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

Sự cố được giải quyết.

15
Img.Canvas.Brush.Style := bsClear; 
Các vấn đề liên quan