【问题标题】:Get SVG size from QSvgRenderer从 QSvgRenderer 获取 SVG 大小
【发布时间】:2018-04-16 21:25:01
【问题描述】:

假设我有一个类似这样的 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">
...

使用QSvgRenderer::viewBoxF()可以获取0 0 100 200的viewbox,但是有什么方法可以获取width="300mm"height="600mm"呢?

(除了自己解析 XML 的显而易见的事情。)

【问题讨论】:

    标签: qt qt5 qtsvg


    【解决方案1】:

    我已阅读源代码。见QSvgHandler::createSvgNode()。行为是这样的:

    QSvgRenderer::viewBoxF() 以用户定义的单位返回 viewBox 属性。

    QSvgRenderer::defaultSize() 读取widthheight 属性(如果存在)。如果单位是cminmm,则将其乘以适当的值以提供分辨率为 90 DPI 的像素。例如,如果 in 则乘以 90,mm 乘以 90/25.4 等等。其他单位 - pxpt 甚至 % 保持原样。 defaultSize() 使用整数,因此其分辨率为 1/90 英寸。

    如果widthheight 不存在,则defaultSize() 以用户定义的单位返回视图框的大小。

    这是相当临时和复杂的行为,不适合我的用例,所以我认为我只需要解析 XML 两次(或者无论如何解析它的第一个位)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-09-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-05-06
      相关资源
      最近更新 更多