QSvgRenderer - 尽管有defaultSize(),还是正确呈现了svg-items?

时间:2016-02-28 14:41:01

标签: c++ qt svg

这就是我尝试渲染SVG的方式:

void DialogImageProperies::showSVG(QString sFile){
    this->adjustSize();

    QSvgRenderer rndr(sFile);   
    QPixmap px;
    QSizeF szSvgF = rndr.defaultSize();

    if (szSvgF.width() > szSvgF.height())
    {
        px = QPixmap(1000, int(qreal(1000 )* szSvgF.height()/szSvgF.width()));
    }
    else
    {
        px = QPixmap(int(qreal(1000 )* szSvgF.width()/szSvgF.height()), 1000 );
    }


    QPainter p(&px);
    rndr.render(&p);

    ui->wdgBck->setPixmap(px);
    this->exec();
}

但至于我,我从来没有注意到我自己创建的任何矢量图像中的画布大小。所以,我认为用户也不会预定义正确的界限。

这就是SVG在Inkscape中的表现 - Inkscape 这就是我得到的 - rendered

现在我认为无法解决所有问题......

1 个答案:

答案 0 :(得分:1)

{{1}}

如果手动删除 width =" 1250" height =" 961.25" ,则Qt重新计算svg的真实itemsBoundingRect) ))