如何使用 Win32/GDI 加载 PNG 图像(如果可能,不要使用 GDI)?

新手上路,请多包涵

是否可以使用 Win32 GDI 函数将文件中的 PNG 加载到 HBITMAP 中?如果不是,那么不使用外部库(如 libpng)的最轻量级解决方案是什么?

原文由 jnm2 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1.4k
2 个回答

您可以使用 Windows 映像组件 来加载 PNG 文件(在 Windows XP SP2 和更高版本上)。有关如何使用 API 的介绍,请参阅 MSDN 杂志,有关从 IStream 加载 PNG 并将其转换为 HBITMAP 的代码示例,请参阅 我的博客文章

原文由 Bradley Grainger 发布,翻译遵循 CC BY-SA 4.0 许可协议

您可以使用 StretchDIBits API 来完成,但受操作系统/驱动程序可用性的限制。

有关详细信息,请参阅 MSDN 文档:

http://msdn.microsoft.com/en-us/library/dd145121(v=VS.85).aspx

http://msdn.microsoft.com/en-us/library/dd145107(VS.85).aspx


对于误导了对这个问题感兴趣的各位,我深表歉意。让我纠正我的错误。否 StretchDIBits 用于 PNG 绘图。您最好尝试 WIC 方法或考虑将 GDI+ 集成到您的项目中的方法。

原文由 9dan 发布,翻译遵循 CC BY-SA 2.5 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题