[Lazarus] Clear font backgrounds

Martin Friebe lazarus at mfriebe.de
Mon Apr 13 16:48:08 CEST 2009


Dave Coventry wrote:
> Hi Martin, Thanks for the response.
>
> 2009/4/13 Martin Friebe <lazarus at mfriebe.de>:
>   
>> uses LCLType, LCLIntf;
>>
>>  SetBkMode(Image1.Canvas.Handle,  TRANSPARENT);
>>     
>
> Yes, I do seem to have these functions.
>
>   
>> You may have to use  LCLIntf.ExtTextOut()
>>     
>
> I'm not sure I understand.
>
> Do you mean Image1.Canvas.LCLIntf.ExtTextOut()?
>
>
>   
Nope,

After "SetBKMode" try to output text as usual, eg with: 
"Image1.Canvas.TextOut()".  (or whatever it is, I don't recall exactly)

This may already work, I haven't tried it....

What I have used is:

  dc := Canvas.Handle;
  SetBkMode(dc,  TRANSPARENT);
  LCLIntf.ExtUTF8Out(dc, X, Y, 0, @ARect, Text, Length, nil);

ARect is a TRect thats specifies where the text goes. Unless you use 
clipping, only the top edge matters (since the background is transparent 
too)

Example can be found in SynEdit:  components\synedit\syntextdrawer.pp 
line 1175 (the line refers to the SVN version; use search otherwise); 
the BKMode is set in synedits main unit.

Martin





More information about the Lazarus mailing list