.ico文件看起来错误用DrawIcon绘制

时间:2016-02-02 07:48:03

标签: c++ mfc ico

我的C ++ MFC程序中的.ico文件中有几个图标。我使用DrawIcon和DrawIconEx将它们绘制到一个内存位图上,它们在可见内容边缘的边缘出现了某种类似阴影的边框。像素看起来像是在图标的透明部分和我作为白色绘制的区域中。 Windows似乎是

我已经使用Axialis IconWorkshop,Visual Studio编辑了.ico文件,并使用一些在线ico-to-png转换器查看了它们。它们看起来很好,直到我用它们画画。多年来它们都没问题,过去几年在Windows 8或Windows 10上发生了一些变化。

如何正确地绘制这些东西?

这是我的一个图标在图标编辑器中的显示方式:

enter image description here

然后他们在我的程序中看起来如何错误(让你看得更清楚): enter image description here

我正在寻找可能对这些内容产生一些影响的可能的视口窗口或其他设备上下文设置。

我几乎发布了自己的答案,因为DrawIconEx似乎解决了问题,因为我有一个高DPI显示。但仔细观察后,垃圾仍然存在,只是在适当的较小像素数下,而不是由DrawIcon函数按比例放大。

1 个答案:

答案 0 :(得分:1)

高DPI显示器上的DrawIcon和DrawIconEx功能可以放大他们绘制的图标。即使他们似乎试图以1:1的尺寸绘制图标,仍然会有一些扩展。

有一些在线信息来源,其中没有一个是有用的,它们共同暗示了问题的原因。我发现唯一可能的解决方案是在同一个图标文件中创建一个40x40,也许是一个64x64图标,让图标绘制功能得到正确的图标来绘制。

这不是一个真正的答案,因为我没有尝试在ico文件中使用不同大小的图标。我刚刚将应用程序切换为不知道高DPI显示。