Qt 从QSVGrender获取SVG大小
假设我有一个类似这样的SVG:Qt 从QSVGrender获取SVG大小,qt,qt5,qtsvg,Qt,Qt5,Qtsvg,假设我有一个类似这样的SVG: <?xml version="1.0" encoding="UTF-8" standalone="no"?> <svg xmlns:svg="http://www.w3.org/2000/svg" xmlns="http://www.w3.org/2000/svg" version="1.1" viewBox="0 0 100 200" height="600mm" width="300mm"> ...
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
version="1.1"
viewBox="0 0 100 200"
height="600mm"
width="300mm">
...
...
使用qsvgrender::viewBoxF()
我可以获得0 100 200
视图框,但是有没有办法获得width=“300mm”
和height=“600mm”
(除了自己解析XML这件显而易见的事情之外。)我已经阅读了源代码。看见行为是这样的:
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
version="1.1"
viewBox="0 0 100 200"
height="600mm"
width="300mm">
...
qsvgrender::viewBoxF()
以用户定义的单位返回viewBox
属性
qsvgrender::defaultSize()
读取width
和height
属性(如果存在)。如果单位为cm
、in
或mm
它们将乘以适当的值,以获得分辨率为90 DPI的像素。例如,如果中的,则它将乘以90,mm
乘以90/25.4,依此类推。其他单位-px
,pt
甚至%
保持原样defaultSize()
使用整数,因此其分辨率为1/90英寸
如果width
和height
不存在,则defaultSize()
以用户定义的单位返回viewBox的大小
这是一种非常特殊和复杂的行为,不适合我的用例,因此我认为我只需解析XML两次(或者至少第一次)