编写基于SVG的桌面应用程序有哪些选择?

时间:2011-11-21 12:17:25

标签: user-interface unix svg desktop-application

说,我想写一个会大量使用SVG的桌面应用程序。我对渲染引擎,GUI工具包,库等的选择是什么?

我希望:

  1. 在Linux / Unix / Mac(无处不在的抗锯齿)上顺利运行
  2. 是开源的
  3. 与标准SVG兼容(例如不透明度,嵌入式光栅图形)
  4. 可以使用现代动态语言(Python,Ruby,Lisp等)访问
    • e.g。基于C的解决方案在这个意义上是完美的
  5. 那么,我的选择是什么?

7 个答案:

答案 0 :(得分:15)

我建议cairo,Cairo是一个支持SVG文件输出的2D图形库。

  

cairo API提供类似于绘图操作符的操作   PostScript和PDF。在cairo的操作包括抚摸和填充   立方Bézier样条,变换和合成半透明图像,   和抗锯齿文本呈现。所有的绘图操作都可以   通过任何仿射变换(规模,旋转,剪切,   等)

Cairo实现为用C编程语言编写的库,但绑定可用于多个不同的programming languages。其中包括PerlPythonRuby等等。

它还有几个Toolkit Bindings。例如,GTK+ 2.8+完全支持cairo。

还有OpenGL的实验后端。哪些好处包括Easily integrate features like PS-, PDF-, SVG-support to your OpenGL-application (may need additional libraries).

  

Cairo是免费软件,可以重新分发和/或   根据GNU Lesser General Public的条款修改   许可证(LGPL)2.1版或Mozilla公共许可证(MPL)版本   1.1由你选择。

答案 1 :(得分:2)

考虑在Mac上顺畅运行的Safari浏览器。您可以使用Raphael库编写应用程序。

此数据库显示Raphael语言页面本身是纯矢量图形。

只需按照自己的方式抛出它,看看它是否适合你的约束......

http://www.irunmywebsite.com/raphael/additionalhelp.php?v=2

答案 2 :(得分:2)

Appcelarator Titanium Desktop似乎是您最好的选择。您可以编写Ruby,Python或JavaScript应用程序,并使用HTML和CSS作为GUI。还有Adobe AIR,但它不是开源的。

至于SVG,我发现的最好的图书馆是d3.js。乍一看,您可能会得到它可视化库的印象,但它可以用于任何类型的SVG工作。有些人提到Rapheal.js,它的优势在于它是跨浏览器,但由于它必须在大多数IE版本中使用VML,因此它会留下一些SVG功能,例如组<g>标签。 / p>

答案 3 :(得分:2)

我建议去Apache's Batik。 Batik是基于Java的SVG工具包,可以在Java存在的任何平台上呈现,生成,操作和转码SVG;来自台式机,小程序甚至手持设备。它利用了Java平台独立性的强大功能。它是桌面应用程序的理想选择。它也支持完整的交互性,链接,脚本和动画。

Apache CocoonOracle JDeveloper 10iThe JFreeChart projectILOG Dicovery and Jviews - The advanced visual data analysis toolsVolity and Gamut Gaming projectsGLIPS Graffiti SVG EditoreDoc Studio projectApache FOP project一些使用Batik的项目。

答案 4 :(得分:0)

我不会直接使用cairo。相反,试试wxWigets ......

有一个非常有用的wxGraphicsContex类,它为你做了大量的cairo和其他很酷的事情。甚至包装中的SVG-Demo也是如此。

还有一个名为“wxcairo”的项目,它使用libsvg。

如果你参与了一个大型的大型项目,它使用SVG作为原生格式,请看一下“Inkcape”。这是一个用GTK编写的非常好的插图程序。

答案 5 :(得分:0)

回答这个问题可能太迟了,我建议使用Opensource Webkit,

通过这样做,以下是优点,

1 - 将获得对HTML的额外支持,
2 - 兼容所有平台,Win,Mac,Linux,iOS,BB
3 - 在所有平台上,它将使用Cairo Library来渲染图形,
4 - 易于扩展和扩展以添加附加功能....

答案 6 :(得分:-2)

忽略拉斐尔的所有话题,而是与D3合作。

D3可以读取您的XML树,并根据您的要求轻松生成SVG代码。这意味着您可以以任何您喜欢的方式呈现任何XML文档。这包括所有拉斐尔的输出,还有更多,除此之外。

在今天之前我没有听说过开罗。但是,根据D3提供的结果,我甚至不会对其进行调查。