如何提高QSvgWidget的帧率?

时间:2019-06-10 15:54:40

标签: python animation svg pyqt5 frame-rate

使用QSvgWidget,我已经从Codepen的示例成功运行了一些SVG代码。在浏览器中,动画非常流畅,例如60fps。在小部件中,它慢得多(同一台机器)。在渲染器上使用setFramesPerSecond设置fps似乎无济于事。它会更改framesPerSecond值,但不会加速动画。唯一要考虑的参数似乎是动画的持续时间,但这与设置帧频并不完全相同。

还有其他方法可以提高FPS吗?

下面的工作代码:

import sys
from PyQt5.QtWidgets import QApplication
from PyQt5.QtSvg import QSvgWidget, QSvgRenderer

svg_str = """
<svg viewBox="0 0 160 160" width="160" height="160">
  <circle cx="80" cy="80" r="50" />
  <g transform=" matrix(0.866, -0.5, 0.25, 0.433, 80, 80)">
    <path d="M 0,70 A 65,70 0 0,0 65,0 5,5 0 0,1 75,0 75,70 0 0,1 0,70Z" fill="#FFF">
      <animateTransform attributeName="transform" type="rotate" from="360 0 0" to="0 0 0" dur="1s" repeatCount="indefinite" />
    </path>
  </g>
  <path d="M 50,0 A 50,50 0 0,0 -50,0Z" transform="matrix(0.866, -0.5, 0.5, 0.866, 80, 80)" />
</svg>
"""

svg_bytes = bytearray(svg_str, encoding='utf-8')

app = QApplication(sys.argv)

svgWidget = QSvgWidget()
svgWidget.renderer().load(svg_bytes)
svgWidget.setGeometry(500,500,1000,1000)
svgWidget.show()

print(svgWidget.renderer().framesPerSecond())
print(svgWidget.renderer().isValid())
print(svgWidget.renderer().animated())

sys.exit(app.exec_())

0 个答案:

没有答案