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<[email protected]>: >> 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 > [email protected] > http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus -- Pierre Delore http://datalinkwristapps.free.fr
-- _______________________________________________ Lazarus mailing list [email protected] http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus
