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

标签 c# winforms graphics imagelist

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

见截图: enter image description here

使用的属性

ColorDepth: Depth32Bit
ImageSize: 16; 16
TransparentColor: Transparent

半透明但不全透明的像素后面有黑色像素。

重新添加所有图像恢复原始质量,但几分钟后,它看起来像屏幕截图的右侧。

最佳答案

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

所以你可以把你的图片放到Resources.resx文件中,然后把它们添加到代码中合适的地方。例如在 UserControl/Form 的构造函数中,通过如下代码调用 InitializeComponent() 之后:

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

(此信息可在回复标记为答案的评论中找到,我已将此添加为答案,这样就不会错过另一个可用选项)

关于c# - ImageList:32 位图像质量下降,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10372797/

相关文章:

javascript - HTML5 Canvas 在绘制的多边形内寻找对象

c# - 按钮 C# 中的 if 语句

c# - asp.net core 如何阻止 http 请求锁定

c# - 绘制用户定义的矩形

wpf - 如何将数据绑定(bind)到托管在 WPF 控件中的 Winform 控件?

C# WinForms 按钮不起作用

C OpenGL glfw3 三角形不显示

c# - Xaml 中的 XPath 选择节点

c# - 如何停止脚本?

.net - 如何在 RichTextBox 中创建上下文菜单