我的 C++ MFC 程序中的 .ico 文件中有几个图标。我使用 DrawIcon 和 DrawIconEx 将它们绘制到内存位图上,它们在可见内容的边缘出现了某种类似阴影的边框。像素看起来像是在图标的透明部分和我画成白色的区域。 Windows 似乎是
我使用 Axialis IconWorkshop、Visual Studio 编辑了 .ico 文件,并使用一些在线 ico-to-png 转换器查看了它们。在我用它们画画之前,它们看起来很好。它们多年来一直很好,但在过去几年中,Windows 8 或 Windows 10 发生了一些变化。
关于如何正确绘制这些东西有什么想法吗?
这是我的一个图标在图标编辑器中的样子:
然后它们在我的程序中看起来是如何错误的(为了让您看得更清楚,它们被放大了):
我正在寻找可能对此有影响的视口(viewport)窗口或其他设备上下文设置。
我几乎发布了自己的答案,因为 DrawIconEx 似乎解决了问题,因为我有一个高 DPI 显示。但仔细观察,垃圾仍然存在,只是像素数适当减少,并没有被 DrawIcon 函数放大。
最佳答案
DrawIcon 和 DrawIconEx 函数在高 DPI 显示器上放大它们绘制的图标。尽管他们似乎试图以 1:1 的大小绘制图标,但仍有一些比例在进行。
有一些在线信息来源,但其中没有一个是有用的,它们一起暗示了问题的原因。我找到的唯一可能的解决方案是在同一个图标文件中创建一个 40x40 或 64x64 的图标,并让图标绘制函数获得正确的图标来绘制。
这不是真正的答案,因为我没有尝试在 ico 文件中使用不同大小的图标。我只是将我的应用程序切换为不了解高 DPI 显示。
关于c++ - 使用 DrawIcon 绘制的 .ico 文件看起来有误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35147735/