为什么QtSvg中的动画元素必须是animateTransform类型才能工作?

时间:2014-04-15 22:30:28

标签: qt animation svg qtsvg

要在我的应用程序中显示SVG图形,我使用GtGui.QgraphicsView,QtGui.QgraphicsScene,QtSvg.QgraphicsSvgItem。 因为QsvgRenderer支持动画SVG-Drawings,所以我在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&#39;:

<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。

编辑于2014年5月1日: 首先我在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文件的xml代码中却没有,QgraphicsView的行为在两个版本中都是相同的。

0 个答案:

没有答案