ImageList: 32-bit Images lose quality

c#, graphics, imagelist, winforms

Solution

It looks like alpha channel data is lost when images are stored as `ImageStream` (default behavior of VS Designer). So if you are ok to stop using Designer to set images in `ImageList`, you can use semitransparent images up to `ColorDepth.Depth32Bit`. It is very inconvenient but it works.

So you can put your images to `Resources.resx` file, and add them in appropriate place in code. For example in constructor of you `UserControl`/`Form`, after call to `InitializeComponent()` by code like this:

  _imageList.Images.Add(Resources.Image32);
  _imageList.Images.SetKeyName(0, "Image32");
  _myButton.Image = 0;

(This info is available in comments to response marked answer, I've added this as answer so it would be harder to miss another available option)

Problem

I'm using `ImageList` for `TreeView` and `ListView`. I've first set the image quality to 32 bit and then added images which are semi-transparent. The quality looks OK, but after a couple of minutes coding, compiling and executing the application, the quality looks bad. See screenshot: Used properties ``` ColorDepth: Depth32Bit ImageSize: 16; 16 TransparentColor: Transparent ``` There are black pixels behind pixels which were semi-transparent but not fully transparent. Re-adding all images restores the original quality, but after a couple of minutes, it looks like on the right side of the screenshot.

Original source

Related problems