8

为了在我的应用程序中显示 SVG 绘图,我使用 GtGui.QgraphicsView、QtGui.QgraphicsScene、QtSvg.QgraphicsSvgItem。因为 QsvgRenderer 支持动画 SVG 绘图,所以我在我的 SVG 文件中集成了一些动画元素,例如:

<circle cx="x" cy="x" r="z" class="style">
<animate attributeName="r" attributeType="XML" 
from="0"  
to="z"
begin="0s" 
dur="2s"
fill="remove" 
restart="always" 
repeatCount="indefinite"
end="indefinite"
/>
</circle>

在 Firefox 中,圆圈按预期运行,在 QgraphicsView 中他没有动画。

所以我尝试了“animateTransform”:

<circle cx="x" cy="x" r="z" class="style">
<animateTransform attributeName="transform" type="translate"
begin="0" 
dur="2s" 
from="x y" to="0 0" 
... 
additive="sum"
/>
<animateTransform attributeName="transform" type="scale" 
begin="0" 
dur="2s" 
from="0" to="1" 
…
additive="sum"
/>
</circle> 

它适用于 QgraphicsView 以及 Firefox。我的问题已解决,但我想了解它。谁能解释这种行为?

补充:QSvgRenderer.animated() 在第一种情况下返回 FALSE,在第二种情况下返回 TRUE。

编辑于 01.05.2014:首先我在 Linux(Ubuntu 13.10)上使用 Python 3.3、Qt 4.8 和 PyQt 4.10.4,在升级到 Ubuntu 14.04 后,我尝试了 Python 3.4、Qt 5.2.1 和 PyQt 5.2.1(因为从Qt 4.8 到 5.2 是对应用程序代码的一些必要修改,但在 svg-files 中的 xml-code 中没有),QgraphicsView 的行为在两个版本中是相同的。

4

0 回答 0