[Lazarus] Bitmap transparency problem (I don't want transparency)
Pierre Delore
dpliste at free.fr
Mon Feb 22 12:33:50 CET 2010
Thanks Peter for your example.
I'm understand your code but my first goal was to display an image (from an imagelist) without the transparency effect (that's why I set Transparent to false).
I didn't understand why if I set the transparent property to false the effect seem to be active.
Bug or (probably) something is missing in my code.
A solution was found with the a 'fillrect' with a white brush. But is it normal?
Regards.
--
Pierre Delore
http://datalinkwristapps.free.fr
http://dpsite.free.fr
Le 22/02/2010 11:37, Peter Williams a écrit :
> Hi Pierre and Lazarus List
>
> see my comments below...
>
> 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.)
>
> 2010/2/22 Pierre Delore<dpliste at free.fr>:
>> hi all,
>>
>> Thanks for your answers.
>>
>> I forgot to specify that I'm in Win32 with 0.9.28.2 (not a snapshot).
>>
>> Peter, I uncommented the 2 lines and I replaced clGreen by clWhite. The
>> image is displayed correctly.
>> I changed the background of the image and I set it to blue (FF0000). The
>> image is displayed correctly.
>> I also replace the clWhite by clBlue. The image is displayed correctly.
>>
>
>> From Delphi graphical game I created, which I converted to Lazarus ...
> some time ago,
>
> ( code from the attached file "uFixedWidthFonts.pas" )
>
> const
> Rects_low = 0;
> Rects_high = 255;
>
> type
> // these lines "borrowed" from SDL.pas
> SInt16 = smallint;
> UInt16 = word;
>
> // [ALVAROGP] TSDL_Rect converted to class, to avoid warnings
> TSDL_Rect = class
> public
> x, y: SInt16;
> w, h: UInt16;
> end;
>
> // end lines from SDL
>
> PFixedFont = ^TFixedFont;
> TFixedFont = object
> private
> Image: TBitmap;
> // [ALVAROGP] Rects redefined as array of class TSDL_Rect
> Rects: array[Rects_low..Rects_high] of TSDL_Rect;
> //...
> TransparentColor : Tcolor;
> //...
>
> //code...
> // Determine the transparent color
> TransparentColor := Image.Canvas.Pixels[Rects[Rects_low].x +
> Rects[Rects_low].w, 0];
>
> Note: the above line can be simplified as:
>
> // this will return a TColor of the colour of the pixel @ location [0,0] of
> // TBitmap e.g. the top left corner pixel of the image.
> // You could choose ANY x,y pixel of the image to be the background colour.
>
> TransparentColor := Image.Canvas.Pixels[0, 0];
>
> // set colour of the Canvas Brush to TransparentColor
> Canvas.Brush.Color := TransparentColor;
>
> // now fill the background of the Canvas with the TransparentColor
> Canvas.FillRect(0,0,pwidth,pheight);
>
> // my modifications to your code *should* make the background of the
> // Canvas to the same colour as the TBitmap's colour at pixel [0,0]
> // before you draw Bitmap -- with the next line of code.
>
>> Canvas.Draw(0, 0, Bitmap);
> // or with my var declarations it would be:
> Canvas.Draw(0, 0, Image);
>
> // 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;
> // or with my var declarations it would be:
> Image.Free
>> end;
>>
>> inherited Paint;
>> end;
>
>
>> Somebody can explain me why I had this problem?
>>
> <snip>
>>
>> Regards
>>
>> --
>> Pierre Delore
>>
>> http://datalinkwristapps.free.fr
>> http://dpsite.free.fr
>>
> <snip>
>
>
>
> --
> _______________________________________________
> Lazarus mailing list
> Lazarus at lists.lazarus.freepascal.org
> http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus
--
Pierre Delore
http://datalinkwristapps.free.fr
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.lazarus-ide.org/pipermail/lazarus/attachments/20100222/10e6dfb4/attachment-0004.html>
More information about the Lazarus
mailing list