Valdas Jankūnas wrote: > Marc Weustink rašė: > >> A faster way, (which might work in most cases) is when you have a 24bit >> depth description with a 32bits per pixel image. > > How retrieve image description from TBitmap?
IntfImage.DataDescription > >> Then you can simply add >> an alpha description (precision=8, shift=24 or 0) to the rawimage. > > How i can do that? if Description.BitsPerPixel = 32 then begin if (Description.RedShift <> 0) and (Description.BlueShift <> 0) and (Description.GreenShift <> 0) then begin Description.AlphaPrec := 8; Description.AlphaShift := 0; end else if (Description.RedShift <> 24) and (Description.BlueShift <> 24) and (Description.GreenShift <> 24) then begin Description.AlphaPrec := 8; Description.AlphaShift := 24; end; end; >> Another thing, I'm not sure if loading form IntfImage/RawImage sets the >> right pixelformat (and thus image description). >> Anyway, maybe the bmp is OK. How do you paint it ? > > I use Canvas.Draw method. Bmp.Canvas.Draw(bitmap) draws in the dept of bmp and not the depth of bitmap. This means if bmp is only created it has pixelformat=pfDevice. Currently that creates a context(and canvas) without alpha channel) > I found another solution to not use a proxy image, but load resource > from stream directly to LazIntfImage (created with > Init_BPP32_B8G8R8A8_BIO_TTB description). Now i always got alpha channel > and code is flexible to various image types (need just change image > reader type). I thing il stay with this solution. Thats ways faster. Marc _______________________________________________ Lazarus mailing list Lazarus@lazarus.freepascal.org http://www.lazarus.freepascal.org/mailman/listinfo/lazarus