[lazarus] Bitmap transparency?
M.Nelissen at student.tue.nl
Sun Nov 9 12:15:12 EST 2003
Mattias Gaertner wrote:
> On Sun, 09 Nov 2003 15:08:06 +0100
> Micha Nelissen <M.Nelissen at student.tue.nl> wrote:
>>I have been looking, but I can't find it in the archives / code: what
>>functions do I need to implement?
> See winapih.inc, search for RawImage.
> See graphtype.pp for the RawImage format.
> intfgraphics.pas contains the TLazIntfImage which uses the 5 functions.
Is GetDescriptionFromDevice only used to create a device compatible
bitmap? If so, this can be done in win32 via CreateCompatibleBitmap.
Retrieving all information requested by TRawImageDescription from a
device context is very tedious, requires handling several cases (because
in win32 objective a DC is a 'stateless' something to be drawn to).
Second reason is that the following lcl call CreateBitmapFromRawImage
will use CreateBitmap which is not recommended by the win32 docs for
While the CreateBitmap function can be used to create color bitmaps, for
performance reasons applications should use CreateBitmap to create
monochrome bitmaps and CreateCompatibleBitmap to create color bitmaps.
When a color bitmap returned from CreateBitmap is selected into a device
context, Windows must ensure that the bitmap matches the format of the
device context it is being selected into. Since CreateCompatibleBitmap
takes a device context, it returns a bitmap that has the same format as
the specified device context. Because of this, subsequent calls to
SelectObject are faster than with a color bitmap returned from CreateBitmap.
I don't know what the exact performance penalty is, but if it's even in
I am just asking because if you're _only_ after a call to
CreateCompatibleBitmap, (not using device info like height, width) there
is a much easier way.
More information about the Lazarus