从ImageList获取的图像看起来与直接从资源获取的图像不同

Jua*_*uan 5 .net c# visual-studio-2010 visual-studio winforms

我有一个带有两个按钮的表单.

png通过在ImageVS的属性编辑器中设置属性(使用Import...按钮),我为其中一个分配了一个图像(16 x 16,32位深度).

我也有一个ImageList(16 x 16 ImageSizeDepth32Bit ColorDepth),我也从属性编辑器中分配了与第一个按钮相同的图像 - > Images然后Add.然后我将这个图像分配给我的第二个按钮:

button2.Image = imageList.Images[0];
Run Code Online (Sandbox Code Playgroud)

这就是图像的外观(实际尺寸的2倍):

在此输入图像描述

是否有可能让我的第二个按钮看起来像我的第一个按钮ImageList?我使用的原因ImageList是因为在检查性能时,根据VS的性能向导,从资源加载图像的代码行是一个热点.

我的应用程序将有一个控件列表,每个控件都有一堆带图像的按钮,所以我希望它们尽可能快地加载.所以我所拥有的是一个静态ImageList,每个控件都可以从中获取图像.

Ash*_*ani 3

这是因为您在图像列表中添加的图像的 ColorDepth 高于您在 ImageList 属性中设置的 ColorDepth。例如,如果您添加的图像为 PNG 格式,则应将 ImageList(在属性窗口中)的 ColorDepth 设置为 Depth32Bit,因为 PNG 格式使用 32 位颜色深度。