c# – ImageList:32位图像质量下降

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

看截图:

使用过的属性

ColorDepth: Depth32Bit
ImageSize: 16; 16
TransparentColor: Transparent

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

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

解决方法

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

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

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

(此信息可在评论中找到回复标记的答案,我已添加此作为答案,因此很难错过另一个可用选项)

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


c语言数组越界会怎么样
c语言指针怎么等于数组
c语言数组怎么存入文字
c语言中怎么显示数组
c语言数组元素怎么选
c语言数组怎么累加
c语言数组符号怎么输入
c语言怎么用长数组
c语言数组函数怎么输入
c语言数组怎么去掉差异
c语言怎么求解数组
c语言数组怎么用变量
c语言怎么申明数组
c语言怎么控制数组
c语言怎么计算数组长度
c语言数组怎么插星号
c语言数组怎么加长度
c语言中怎么输出数组
c语言怎么记住数组边界
c语言数组怎么输入符号