用于显示大位图的任何好的C ++库

时间:2010-06-04 09:47:10

标签: c++ bitmap sdk

我目前正在使用MFC / GDI和Stingray在我的应用程序中显示位图,我正在寻找更好的解决方案。具体而言;

  • 绘制速度更快 - 我目前的解决方案很慢,基于StretchDIBits
  • 更好的渲染质量 - StretchDIBits在缩放位图时渲染质量非常糟糕
  • 支持旋转位图
  • 支持以所有流行格式加载/保存
  • 支持大位图 - 我经常使用大约64mb的航空照片作为12,000x12,000 jpg。 GeoTIFF支持也很有用
  • 与MFC文档/视图兼容,包括打印(例如必须能够呈现给CDC)
  • 访问源代码很好但不是必需的
  • 易于使用/移植现有的GDI代码

虽然免费总是很好,但我不介意在一个体面的图书馆花费合理的金额,但没有运行时版权费用。谷歌搜索建议如下;

任何人都有这方面的经验或者可以推荐一个好的选择吗?

3 个答案:

答案 0 :(得分:3)

自XP早期以来,任何Windows机器都可以使用GDI +。它具有适用于所有流行图像格式的编解码器,包括JPEG。非常好的过滤器,用于高质量的图像重新缩放。无限制的图像旋转。通过Graphics类绘制到CDC。 SDK gdiplusXxx.h头文件中提供了C ++包装器的源代码。速度可能相当,但渲染是基于软件以确保兼容性。

您可以#include <gdiplus.h>直接使用C ++包装器。 SDK文档are here。 CImage类在MFC中可用,但它不会公开所有功能。

答案 1 :(得分:2)

我认为你不太可能在Windows上找到比GDI更快 的东西,因为它具有内核级支持,这是开源解决方案所不具备的。

您可能还需要查看OpenGL或Direct2D / Direct3D,因为它们也可以直接访问帧缓冲区。使用3D API,纹理大小可能会成为一个问题,因为大多数标准限制为4096x4096。

答案 2 :(得分:2)

我过去使用了CxImage,这是一个可以添加到评估列表中的内容。