【发布时间】:2012-05-09 09:43:25
【问题描述】:
我希望将 HBITMAP 保存为 PNG 图像。这是否可能仅使用 GDI API? (我使用的是 C,所以没有 GDI+。)我只找到了像 this 这样的例子来保存到 BMP 文件。或者我应该使用libpng 并使用GetDIBits?
Related question(关于阅读)。
【问题讨论】:
我希望将 HBITMAP 保存为 PNG 图像。这是否可能仅使用 GDI API? (我使用的是 C,所以没有 GDI+。)我只找到了像 this 这样的例子来保存到 BMP 文件。或者我应该使用libpng 并使用GetDIBits?
Related question(关于阅读)。
【问题讨论】:
很遗憾,GDI 不支持 PNG。
【讨论】:
Microsoft Windows API 不直接从 DLL 公开 任何 c++ 类 - c++ 标准没有定义 ABI,因此,使用的调用约定和名称修改留给特定的实现定义。
因此,至少在 Metro 之前,Windows 操作系统支持的所有“C++”接口实际上都是一个导出 C 兼容 API 的常规 dll,以及一组带有必要模板和内联代码的 c++ 头文件。
因此,GDI+ 在 MSDN 中记录了 Flat API。
【讨论】: