【发布时间】:2013-07-07 02:28:49
【问题描述】:
我正在使用 wxPython 为最终将成为嵌入式设计的项目制作一些显示界面的原型。由于我们正在与图形设计师进行迭代,因此让他们在 Inkscape 这样的所见即所得编辑器中工作比不断重写 2D 图形绘图调用要容易得多。对于需要动画或动态文本的元素,SVG 元素可以通过 ID 轻松识别,以便在渲染之前以编程方式更新它们。渲染流程如下所示:
Inkscape SVG as XML --> Python modification of XML --> Drawing onto wxPython buffered canvas using Cairo and pyRSVG
我想为一个围绕固定轴的旋转指针制作动画,以用于量规。为了定义针,图形设计师绘制图形“needle”和一个“needle_axis”元素,它是一个小圆圈。然后,我想我可以使用所需的角度和“needle_axis”的中心坐标来设置变换属性。但是,由于其他变换可能会影响相对位置,因此确定旋转轴的绝对位置并非易事。
我似乎找不到用于确定元素绝对坐标的 Python 库,感觉就像重新发明轮子来尝试实现 SVG 规范的一部分。有必要计算它。 rsvg API 提到了 rsvg_handle_get_dimensions_sub 和 arsvg_handle_get_position_sub 函数来获取元素的尺寸和位置,但我找不到 pyRSVG 的 API。
有没有比手动计算更好的方法来找到旋转轴?一个示例Inkscape SVG file and test snippet 可作为要点提供。
【问题讨论】:
-
尝试做类似的事情,找到了一个 Python 扩展库函数
simpletransform.py- 但它在我安装的 InkScape 的 Deprecated 文件夹中,并且无法导入(没有大量工作)。