【问题标题】:QPixmap and SVGQPixmap 和 SVG
【发布时间】:2012-04-22 04:02:44
【问题描述】:

您建议如何使用 QPixmap 处理 svg?

构造QPixmap(":/myfile.svg"); 然后调用scaled() 不起作用。 QPixmap 被像素化。

谢谢。

【问题讨论】:

    标签: qt svg qpixmap


    【解决方案1】:

    您应该使用SVGRenderer 将其渲染到QImage。从那里您可以使用QPixmap::convertFromImage 转换为QPixmap

    【讨论】:

    【解决方案2】:

    类似的东西:

    QSvgRenderer renderer(svg_file_name);
    QPixmap pm(width, height);
    pm.fill(fill_color);
    QPainter painter(&pm);
    renderer.render(&painter, pm.rect());
    

    【讨论】:

      【解决方案3】:

      现在有了更简单的方法,不需要 SVG 模块

      QIcon("filepath.svg").pixmap(QSize())
      

      如此简单,工作正常。至少在我的情况下它起作用了。

      【讨论】:

      • 至少就图标的有限用例而言,现在应该是公认的答案。请注意QIcon::addFile()方法也是现在隐式接受 SVG 文件,允许每个图标模式和状态与其自己的 SVG 文件相关联。
      • 这不会放大 SVG,如果小于这个尺寸,它保持不变。
      • 这很棒。但是如何通过从包含 SVG 的字节数组创建可缩放图标来实现相同的效果?
      猜你喜欢
      • 2020-11-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-05-05
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多