跨平台绘图库

时间:2009-07-29 14:36:36

标签: c++ cross-platform drawing

我一直在寻找一个可以从C ++调用的优秀的跨平台2D绘图库,可以用来绘制一些相当简单的几何体;某些图表的线条,矩形,圆圈和文本(水平和垂直),并将输出保存为PNG。

我认为商业软件包比开源更受欢迎,因为我们不想担心许可问题(除非有BSD风格的许可证没有信用条款)。我看过看起来很有希望的Cairo Graphics,但是文本渲染看起来像废话,并且文本后端的升级将我们带入了阴暗的许可证之地。

我需要Windows,Mac和Linux。优选地,相当轻便且易于集成的东西。我考虑过Qt,但这对我们的应用来说太沉重了。

任何关于此的想法都会很棒。

11 个答案:

答案 0 :(得分:13)

试试Anti-Grain Geometry。从描述:

  

Anti-Grain Geometry(AGG)是一个开源的免费图形库,采用工业标准C ++编写。 AGG的使用条款和条件在许可页面上描述。 AGG不依赖于任何图形API或技术。基本上,您可以将AGG视为渲染引擎,该渲染引擎可以从某些矢量数据在内存中生成像素图像。但当然,AGG可以做的远不止这些。 AGG的想法和理念是:

  • 抗锯齿。
  • 亚像素精度。
  • 最高质量。
  • 高绩效。
  • 平台独立性和兼容性。
  • 灵活性和可扩展性。
  • 轻量化设计。
  • 可靠性和稳定性(包括数值稳定性)。

答案 1 :(得分:7)

另一个:Skia。用于Android和Chrome,在主动开发,硬件加速。

答案 2 :(得分:5)

看看SFML。它是开源的,但许可证非常宽松。

Drawing simple shapes
Displaying text

答案 3 :(得分:2)

Antigrain提供高质量的原始渲染,似乎能够渲染真实的字体,并可根据要求提供商业许可。

http://www.antigrain.com/

答案 4 :(得分:1)

答案 5 :(得分:1)

你试过FLTK吗?它是轻量级的,跨平台的,支持2D / 3D图形,并带有一个好的小部件集(包括图表组件)。 API简单直接。

答案 6 :(得分:1)

还有libgd - 简单的,但编写得很好。

关于Cairo Graphics,我无法相信它看起来很糟糕renders text。如果您特别关注文本呈现,那么从2010年1月开始的State of the Text Rendering可以提供很好的概述。

答案 7 :(得分:1)

我使用CImg:跨平台(自包含单头文件),简单,简洁。 PNG不是本机支持的,但如果安装了ImageMagick,则可以处理(参见supported formats)。

另见related question

答案 8 :(得分:1)

您可以使用Allegro 5(因为提到了SDL和SFML)。这提供了您需要的所有平台(以及更多),并且可以渲染形状并保存到PNG。版本5具有大大改进的API和硬件加速。使用这些低级跨平台库,您必须找到自己的图表解决方案。

我在Allegro上添加了一些注释on my blog,并在Mac上使用它。

答案 9 :(得分:0)

答案 10 :(得分:0)

我会选择AGG或Cairo。