这就是我尝试渲染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
现在我认为无法解决所有问题......
答案 0 :(得分:1)
{{1}}
如果手动删除 width =" 1250" 和 height =" 961.25" ,则Qt重新计算svg的真实itemsBoundingRect) ))