我一直在寻找一个可以从C ++调用的优秀的跨平台2D绘图库,可以用来绘制一些相当简单的几何体;某些图表的线条,矩形,圆圈和文本(水平和垂直),并将输出保存为PNG。
我认为商业软件包比开源更受欢迎,因为我们不想担心许可问题(除非有BSD风格的许可证没有信用条款)。我看过看起来很有希望的Cairo Graphics,但是文本渲染看起来像废话,并且文本后端的升级将我们带入了阴暗的许可证之地。
我需要Windows,Mac和Linux。优选地,相当轻便且易于集成的东西。我考虑过Qt,但这对我们的应用来说太沉重了。
任何关于此的想法都会很棒。
答案 0 :(得分:13)
试试Anti-Grain Geometry。从描述:
Anti-Grain Geometry(AGG)是一个开源的免费图形库,采用工业标准C ++编写。 AGG的使用条款和条件在许可页面上描述。 AGG不依赖于任何图形API或技术。基本上,您可以将AGG视为渲染引擎,该渲染引擎可以从某些矢量数据在内存中生成像素图像。但当然,AGG可以做的远不止这些。 AGG的想法和理念是:
答案 1 :(得分:7)
另一个:Skia。用于Android和Chrome,在主动开发,硬件加速。
答案 2 :(得分:5)
看看SFML。它是开源的,但许可证非常宽松。
答案 3 :(得分:2)
Antigrain提供高质量的原始渲染,似乎能够渲染真实的字体,并可根据要求提供商业许可。
答案 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)。
答案 8 :(得分:1)
您可以使用Allegro 5(因为提到了SDL和SFML)。这提供了您需要的所有平台(以及更多),并且可以渲染形状并保存到PNG。版本5具有大大改进的API和硬件加速。使用这些低级跨平台库,您必须找到自己的图表解决方案。
我在Allegro上添加了一些注释on my blog,并在Mac上使用它。
答案 9 :(得分:0)
答案 10 :(得分:0)
我会选择AGG或Cairo。