【问题标题】:Save HBITMAP as PNG image using GDI?使用 GDI 将 HBITMAP 保存为 PNG 图像?
【发布时间】:2012-05-09 09:43:25
【问题描述】:

我希望将 HBITMAP 保存为 PNG 图像。这是否可能仅使用 GDI API? (我使用的是 C,所以没有 GDI+。)我只找到了像 this 这样的例子来保存到 BMP 文件。或者我应该使用libpng 并使用GetDIBits

Related question(关于阅读)。

【问题讨论】:

    标签: c winapi png gdi


    【解决方案1】:

    很遗憾,GDI 不支持 PNG。

    【讨论】:

    • 好的,那么使用 GetDIBits 向 libpng 提供数据是这里的典型方式吗?
    【解决方案2】:

    Microsoft Windows API 不直接从 DLL 公开 任何 c++ 类 - c++ 标准没有定义 ABI,因此,使用的调用约定和名称修改留给特定的实现定义。

    因此,至少在 Metro 之前,Windows 操作系统支持的所有“C++”接口实际上都是一个导出 C 兼容 API 的常规 dll,以及一组带有必要模板和内联代码的 c++ 头文件。

    因此,GDI+ 在 MSDN 中记录了 Flat API

    【讨论】:

    • 这是对这个问题或其他问题的回答吗?
    • 重点是,要求 C 兼容的 API 并不排除 GDI+。
    • 感谢您指出这一点!我只是假设他们实际上是在导出类。但是我认为 libpng 将远没有尝试正确调用 Flat API 的痛苦:-)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-10-16
    • 1970-01-01
    • 2017-03-01
    • 2010-09-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多