【问题标题】:ImageList Transparency not working at runtimeImageList Transparency 在运行时不起作用
【发布时间】:2009-11-20 17:55:49
【问题描述】:

我正在使用具有透明度的 32 位 PNG 文件。我将它们添加到具有属性的图像列表中:

ColorDepth: Depth32Bit
TransparentColor: Transparent

当我将图像分配给我的工具栏按钮时,它会在 Visual Studio 中以正确的透明度进行预览。但是当我运行应用程序时,透明度完全被黑色覆盖了半透明区域。

我该如何解决这个问题?

【问题讨论】:

  • 如果我没记错的话,SWF 2.0 ImageList 中有一个错误,它会在保存图像列表资源时从图像列表中的 32 位图像中删除 alpha 通道。如果您在 Visual Studio 中保存并重新加载表单,图像是否仍然正确显示?
  • 是的,保存并关闭表单或重新启动 Visual Studio 后预览仍然正确。

标签: c#-2.0 imagelist


【解决方案1】:

如果您直接将它们添加到工具栏而不使用图像列表,我认为它们会正确绘制。

【讨论】:

  • 简单的解决方案。我也比较喜欢这种方式。
  • 好吧,我更喜欢使用图像列表来轻松交换工具栏按钮的图像(如切换非活动按钮)。
  • 在我看来,您不应该在运行时更改工具栏按钮的文本或图标。您可以为此使用可检查按钮。
  • 如何将它们直接添加到工具栏?
  • 我猜你使用的是 SWF 1.1 风格的工具栏?我建议改用 2.0 风格的 ToolStrip。这不仅为您的应用程序增添了一些亮点,而且还可以直接设置图像:)
【解决方案2】:

解决方案显然是放

Application.EnableVisualStyles();

在您的申请开始之前。这解决了透明度问题。

Solution Reference

MSDN on EnableVisualStyles

【讨论】:

  • 好的,我之前看到过这个问题没有解决它。我确实想知道为什么你的第二张截图看起来这么厚实!
  • 我在 Word 插件中遇到了这个问题(使用 AddinExpress)。将 Application.EnableVisualStyles() 添加到我的 AddinModule 的 InitializeComponent 方法解决了它。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-10-03
  • 1970-01-01
  • 2019-05-10
  • 1970-01-01
  • 1970-01-01
  • 2016-08-05
相关资源
最近更新 更多