【问题标题】:Image taken from ImageList looks different than taken straight from resource从 ImageList 中获取的图像看起来与直接从资源中获取的图像不同
【发布时间】:2011-12-03 02:44:36
【问题描述】:

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

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

我还有一个 ImageList(16 x 16 ImageSizeDepth32Bit ColorDepth),我也从属性编辑器中分配了与第一个按钮相同的图像 -> Images 然后@ 987654330@。然后我以这种方式将此图像分配给我的第二个按钮:

button2.Image = imageList.Images[0];

这就是图像的外观(实际大小的 2 倍):

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

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

【问题讨论】:

  • 这不是 16x16 的图像,它至少是 32x32。使得记录在案的 ImageList.ColorDepth 也很可能是错误的,这可以解释颜色损失。
  • @HansPassant:当我双击 -> 属性 -> 详细信息时,这就是 Windows 告诉我的。请注意,我的图像是实际大小的 2 倍。
  • 你找出问题所在了吗?我也有同样的问题。
  • @tunafish24 这是很久以前的事了,但我认为当我停止使用 Photoshop 编辑图像时,这种情况就不再发生了。从来没有想过为什么会发生这种情况。

标签: c# .net winforms visual-studio visual-studio-2010


【解决方案1】:

这是因为您添加到 Imagelist 中的图像具有比您在 ImageList 属性中设置的 ColorDepth 更高的 ColorDepth。例如,如果您添加的图像是 PNG 格式,您应该将 ImageList(在属性窗口中)的 ColorDepth 设置为 Depth32Bit,因为 PNG 格式使用 32Bit 色深。

【讨论】:

  • 我的ImageList 设置为 32 位色深。 “我还有一个ImageList(16 x 16 ImageSizeDepth32Bit ColorDepth)...
猜你喜欢
  • 1970-01-01
  • 2023-03-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-01-13
  • 2020-10-24
  • 2020-06-22
  • 2011-12-13
相关资源
最近更新 更多