我正在使用QSvgRenderer类在Qt中渲染SVG。我能够为SVG设置动画,但只能使用旧版SVG的属性。
我正在尝试使用最新版本的SVG动画使B1和B2笔划字段闪烁,但是仅不推荐使用的animateColor有效。
以下是我同时使用以下两个版本的动画属性的svg的片段:
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20010904//EN"
"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd">
<svg xmlns="http://www.w3.org/2000/svg"
width="1.24444in" height="1.54444in"
viewBox="0 0 112 139">
<path id="B1"
fill="blue" stroke="none" stroke-width="3"
d="M 17.08,8.91
C 21.91,7.93 26.02,8.14 29.87,11.65
37.10,18.27 34.53,30.65 25.08,33.61
9.80,38.40 0.02,16.14 17.08,8.91 Z">
<animateColor
attributeName="stroke"
from="red"
to="white"
dur="0.5s"
repeatCount="indefinite"
/>
</path>
<path id="B2"
fill="blue" stroke="none" stroke-width="3"
d="M 51.19,9.17
C 56.02,8.19 60.14,8.40 63.98,11.91
71.21,18.53 68.65,30.91 59.19,33.87
43.91,38.66 34.13,16.40 51.19,9.17 Z">
<animate
attributeType="XML"
attributeName="fill"
values="red;white"
calcmode="discrete"
dur="0.5s"
repeatCount="indefinite" />
</path>
</svg>
当我在Qt的图像查看器中打开图像时,我仅看到B1的笔画闪烁。但是,当我打开Chrome中的SVG时,我只会看到B2的笔触动画。这仅仅是Qt使用SVG库的产物吗?还是我的机器上需要更新一个软件包?
操作系统:Debian 10 Qt Creator:V4.14.0 Qt:5.15.2
正如文档所指出的:
可伸缩矢量图形(SVG)是一种用于描述XML中的二维图形和图形应用程序的语言。SVG 1.1是W3C建议书,构成了Qt当前SVG开发的核心。SVG 1.2是SVG工作组当前正在开发的规范,并且以草稿形式提供。移动SVG配置文件(SVG Basic和SVG Tiny)针对资源受限的设备,并且是用于第三代移动电话的3GPP平台的一部分。您可以在About SVG上了解有关SVG的更多信息。
Qt支持SVG 1.2 Tiny的静态功能。目前不支持ECMA脚本和DOM操作。
...
也就是说,它支持简约的SVG标准。
一种解决方法是使用QWebEngineView
(或WebEngineView
在QML中)使用铬作为工具来呈现与Google-Chrome相同的方式。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句