Question

How to get a TPicture from a TImageList?

I need to do Image1.Picture:=...TPicture from an image list, to load an image into a TImage.

An image list stores all my PNG images that are transparent.

I tried to use a bitmap (GetBitmap), but what I need is transparency. Unfortunatelly, I have a white background using a bitmap.

Thanks!

Was it helpful?

Solution

The regular TImageList uses bitmaps. Although they can be partially transparent, it is actually just a fake. In Delphi you can draw bitmaps to be transparent by assigning them a single transparent color. That exact color will be drawn a 100% transparent, while the other colors are not. Usually the color is taken from the bottom left corner of the image.

TPicture itself doesn't do anything. It is merely a container for TGraphic descendants. You'll have to find a type of image that can be transparent.

A convenient format is PNG. PNG event supports an alpha channel, which means that every pixel can be assigned a different transparency value.

Fortunately there are TPngImageLists that combine the ease of TImageList with the power of PNG. You can read this article. It is in Dutch, but maybe Google Translate can help you. Or maybe you can find an english resource on this subject. I've used this imagelist and it's great, because you can have actual icons with an alpha channel and still use them with regular toolbars and speedbuttons.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top