[Lazarus] Bitmap transparency problem (I don't want transparency)

Peter Williams pewtas at gmail.com
Mon Feb 22 01:27:06 CET 2010


Hi Pierre and Lazarus list,

2010/2/22 Pierre Delore <dpliste at free.fr>:
> Hi,
>
> I have a transparency problem when I try to display a bitmap stored in a
> TImagList.
> The bitmap I want to display is a green arrow with a white background. I
> want to display it without transparency.
> With the code below the bitmap is displayed but the background is not white
> (it's a copy of a part of the screen). If I uncomment the 2 lines with the
> fillrect, the background is set to green.

I think that you commented code reveals why this is happening. See my
untested suggested code
changes below.

>
> Any ideas?
>
a--------------------------------------------------------------------------------------------------------
> procedure TImgList.Paint;
> var
>   Bitmap: TBitmap;
> begin
>     Bitmap := TBitmap.Create;
>     try
>       Bitmap.Height := pHeight;
>       Bitmap.Width := pWidth;
>
>       TImgListItem(ListImg.Items[index]).ImgList.GetBitmap(tagv,Bitmap);
> //the image is a green arrow with a white background
>
>       Bitmap.Transparent:=False;
>
>       //Canvas.Brush.Color := clGreen;         If I uncomment this part the
> background is set to green

// set colour of the Canvas Brush to white (using the constant "clWhite")
       Canvas.Brush.Color := clWhite;

>       //Canvas.FillRect(0,0,pwidth,pheight);

// now fill the background of the Canvas with the Canvas.Brush.Color
set to colour white
       Canvas.FillRect(0,0,pwidth,pheight);

// note that my changes (above) are proposed, untested to the code
which you posted.

// my modifications to your code *should* make the background of the
Canvas clWhite before you draw Bitmap -- with the next line of code.

>       Canvas.Draw(0, 0, Bitmap);

// hopefully now Bitmap will be drawn on a clWhite background... which
is the effect you said in your email you're wanting.

>     finally
>       Bitmap.Free;
>     end;
>
>   inherited Paint;
> end;
>
>
> Regards.
>
> --
> Pierre Delore
>
> http://datalinkwristapps.free.fr
> http://dpsite.free.fr
>
> --
> _______________________________________________
> Lazarus mailing list
> Lazarus at lists.lazarus.freepascal.org
> http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus
>
>

I hope that these mods to your posted code help. Please note that they
are proposed and untested.

Note: in my comments I use the British spelling of the word "colour"
not American spelling of "color".

With LOVE from PEW   ;-)))

Fond Regards, Peter Eric (aka 'pew') WILLIAMS
from Hobart, Tasmania, Australia -- phone (03) 6236-9675

My free website is: http://pewtas.googlepages.com  (or)
http://tinyurl.com/yuyejs

(please visit my free website and let me know what you think about it.)




More information about the Lazarus mailing list