Transparent PNG image (with TImageList) in a TMainMenu

Gravity picture Gravity · Aug 13, 2011 · Viewed 18k times · Source

I want to load a PNG with transparent background in a TImageList and use it in a TMainMenu (via TAction).
However, in Delphi the background is just black. Is PNG support only half implemented in Delphi?

This guy says it worked for him but with a button instead of a main menu.

My setup:

  • My image is 8 bit per color plus 8 bit for transparency channel (I have tried also with 1 bit for transparency but still doesn't work). The image looks just fine in any other program.
  • Delphi XE.
  • In TImageList's editor the 'transparent color' and 'Fill color' are set to 'Default' and are disabled.

Answer

djsoft picture djsoft · Aug 13, 2011

There's no reason to backup whole DFM file.

Before doing something to your ImageList you should export your images: click the "Export" button in the image list editor and it will save all images to a single .BMP file.

After changing properties: ColorDepth = cd32Bit, DrawingStyle = dsTransparent

You should click "Add" button and select the file you previously exported. Then, images will be drawn with transparency in the menu and toolbars (on D2010 at least)... No need to use 3rd party components.