我正在使用wxPython为一个最终将成为嵌入式设计的项目设计一些显示界面。因为我们正在与图形设计师迭代,所以让他们在所见即所得编辑器(如Inkscape)中工作比不断重写二维图形绘图调用要容易得多。对于需要动画或动态文本的元素,SVG元素可以很容易地通过ID进行标识,以便在呈现之前对它们进行编程更新。渲染流程如下所示:
Inkscape SVG as XML --> Python modification of XML --> Drawing onto wxPython buffered canvas using Cairo and pyRSVG
我想动画一个围绕一个固定轴旋转的针为一个量规。为了定义针,图形设计师绘制图形化的“针”和“针轴”元素,这是一个小圆。然后,我想我可以使用所需的角度和“针轴”的中心坐标来设置变换属性。但是,由于其他变换可能会影响相对位置,因此确定旋转轴的绝对位置是非常重要的。在
我似乎找不到一个Python库来确定元素的绝对坐标,感觉就像是重新发明轮子,尝试实现SVG规范中计算它所必需的部分。rsvg API提到了rsvg_handle_get_dimensions_sub
和{
有没有比手动计算旋转轴更好的方法?一个例子Inkscape SVG file and test snippet可以作为一个要点。在
如果我理解正确,你有针的坐标和旋转轴的坐标,你想通过编程改变针的“角度”,然后在SVG文件中相应地改变针的形状?在
我认为这是一个非常糟糕的主意:对SVG进行更改、保存并呈现“newsvg”将需要太多的资源,这正是为什么这么简单的任务看起来很复杂。在
相反,只需解析一次SVG(使用} 函数,可以满足您的需要!在
lxml
例如,只需执行一些XPATH
查询就可以提取坐标)并将形状构建到模型中(例如,Needle
类,带有路径和中心),然后使用Cairo
变换旋转指针。它们已经提供了一个^{相关问题 更多 >
编程相关推荐