如何在Linux窗口中显示交互式SVG?

4

我非常喜欢SVG,使用它来绘图非常棒。到目前为止,我已经使用Inkscape制作了静态图像。但是我想让它们变得更加互动。

我尝试了一些教程,比如这个。但是我只能在网页浏览器中看到SVG并与之交互。我希望在桌面窗口中制作这样的东西。

有像Cairo或OpenGL这样的绘图工具包,但是我必须通过代码进行绘制。使用SVG(使用Inkscape绘制)似乎更加聪明。

在普通桌面窗口/画布中查看交互/动画SVG需要什么?我看到了一些将SVG转换为Cairo的模块:但是是否有适用于Linux的直接SVG解释器?


OpenGL只是一个绘图API,即一堆函数,用于告诉您的图形系统在屏幕上绘制三角形和其他低级别的东西。OpenGL不是绘图工具包(您可以称之为场景图)。只是需要说一下。在SVG的情况下:通过结合SVG解析器(libsvg)、一些矢量渲染系统(Cairo)、DOM和JavaScript引擎,您可以获得交互式SVG。但这是一个相当大的实现。 - datenwolf
谢谢您的澄清。在您看来,以最佳方式生成和显示交互式矢量图形是什么?从代码中生成图像的想法让我感到厌烦。我希望SVG有一个与Flash / Air的GPL等效物。 - neydroydrec
在日常应用程序中使用代码生成图像确实是一个不好的主意。而SVG是代表矢量图像的事实标准,采用开放格式。然而,由于它来自W3C,因此它是以DOM基础架构为设计思路的。因此,我建议采用一些不同的方法,起初您可能会感到不适:将您的图片表示为代码,但不是硬编码到程序中,而是使用易于集成的解释器的某种脚本语言。在定义图片的同一脚本中,您还可以添加交互性。我认为,良好的候选者是Squirrel、Lua和V8解释器。 - datenwolf
这里可以找到一个相关的问题(虽然不完全相同):https://dev59.com/fmgu5IYBdhLWcg3wnoSC - demented hedgehog
1个回答

2
问题在于这些效果需要JavaScript和层叠样式表,这基本上意味着完整的Web渲染引擎。因此,最简单的方法是使用其中一个,即WebKit或Gecko(现在WebKit可能对SVG有更好的支持,而且我现在找不到Gecko的包)。

哈,谢谢。这是否意味着Webkit将提供解释器和画布来显示SVG?我看过这篇关于在桌面应用程序中使用Webkit的文章。我希望有Python绑定可用。谢谢。 - neydroydrec
这是一个总结不同浏览器对SVG支持程度的页面:这里。你可能很难找到Gecko的软件包,原因是他们最近宣布将在Firefox 5中停止官方支持嵌入功能:这里 - robertc
@Benjamin - 根据您之前的评论,我为该问题添加了Python标签。此外,将所有必需内容集成在一起显然比其他任何语言更有意义。 - jsbueno

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接