ImageList:32位图像质量下降

时间:2012-04-29 14:17:04

标签: c# winforms graphics imagelist

我正在ImageListTreeView使用ListView。我首先将图像质量设置为32位,然后添加半透明图像。质量看起来不错,但在编写,编译和执行应用程序几分钟后,质量看起来很糟糕。

查看截图:   enter image description here

使用过的属性

ColorDepth: Depth32Bit
ImageSize: 16; 16
TransparentColor: Transparent

像素背后有黑色像素,半透明但不完全透明。

重新添加所有图像会恢复原始质量,但几分钟后,它就会显示在屏幕截图的右侧。

1 个答案:

答案 0 :(得分:8)

当图像存储为ImageStream时,看起来alpha通道数据会丢失(VS Designer的默认行为)。 因此,如果您可以停止使用Designer在ImageList中设置图像,则可以使用最高ColorDepth.Depth32Bit的半透明图像。 它非常不方便但是有效。

因此,您可以将图像放到Resources.resx文件中,并将其添加到代码中的适当位置。例如,在UserControl / Form的构造函数中,在通过以下代码调用InitializeComponent()之后:

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

(此信息在回复标记答案的评论中可用,我已将其添加为答案,因此更难错过其他可用选项)