[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