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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了.ico文件看起来错误用DrawIcon绘制相关的知识,希望对你有一定的参考价值。

我在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功能放大。

答案

高DPI显示器上的DrawIcon和DrawIconEx功能可以放大它们绘制的图标。尽管他们似乎试图以1:1的大小绘制图标,但仍然存在一些扩展。

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

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

另一答案

只需使用没有DI_DEFAULTSIZE标志的DrawIconEx,就会导致混乱。例如。 DrawIconEx(句柄,32,32,ArrowCur,0,0,0,0,DI_NORMAL);

以上是关于.ico文件看起来错误用DrawIcon绘制的主要内容,如果未能解决你的问题,请参考以下文章

ParcelJS 捆绑错误 - favicon.ico:无效版本:未定义

ico图标制作软件

对单片机C语言的一些误用和总结

Spring mvc:资源未找到 *.ico 文件

Python - Http服务器,如何发送.ico文件?

nginx过滤报错日志