我正在使用 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 文件和测试片段可作为要点提供。