ImageList: 32-битные изображения теряют качество

Я использую ImageList на TreeView и ListView. Сначала я установил качество изображения на 32 бит, а затем добавил полупрозрачные изображения. Качество выглядит нормально, но через пару минут кодирования, компиляции и выполнения приложения, качество выглядит плохо.

см. скриншот: enter image description here

свойства

ColorDepth: Depth32Bit
ImageSize: 16; 16
TransparentColor: Transparent

есть черные пиксели за пиксели, которые были полупрозрачными, но не полностью прозрачный.

повторное добавление все изображения восстанавливают исходное качество, но через пару минут оно выглядит как на правой стороне скриншота.

1 ответов


похоже, что данные Альфа-канала теряются, когда изображения хранятся как ImageStream (поведение VS Designer по умолчанию). Поэтому, если вы в порядке, чтобы остановить использование Designer для установки изображений в ImageList, вы можете использовать полупрозрачные изображения до ColorDepth.Depth32Bit. Это очень неудобно, но это работает.

таким образом, вы можете поместить свои изображения в Resources.resx file и добавьте их в соответствующее место в коде. Например, в конструкторе вы UserControl/Form, после вызова InitializeComponent() в коде, как это:

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

(эта информация доступна в комментариях к ответу, отмеченному ответом, я добавил Это как ответ, поэтому было бы сложнее пропустить другой доступный вариант)