Qt SVG渲染器无法渲染设置大小?

时间:2016-03-14 16:16:38

标签: c++ qt svg

所以我使用一些SVG文件在我的Qt应用程序中显示图形。我将svg文件很好地加载到QSVgRenderer中,但是当我在屏幕上实际呈现SVG数据时,它比预期的要小。

为了确保我没有做出奇怪的事情,我在空的QDialog PaintEvent函数中执行以下操作,仅使用下面的文本来显示我的问题。

QPainter p(this);

QFont f("verdana", 9);
p.setFont(f);

painter.translate(100,100);

painter.setPen("#FF0000");
QRectF br = painter.boundingRect(0,0,0,0, Qt::AlignLeft, "Hello There!);
painter.drawRect(0, -br.height(), br.width(), br.height());
painter.drawText(0,0,"Hello There!");

painter.setPen("#000000");

QByteArray svgData(QString().sprintf(
    "<svg><text font-family=\"%s\" font-size=\"%dpt\" fill=\"black\">%s</text></svg>", "verdana", 9, "Hello There!"
    ).toStdString().c_str())

QSvgRenderer svgr(svgData);

// svgr.setViewBox(QRectF(0,0,br.width(), br.height());     // Tried this line also but did not make any difference.
// svgr.setViewBox(QRectF(0,0,br.width() * 0.68, br.height());     // Sort of makes my svg the proper width, but breaks when using other font styles.
svgr.render(&p, br);

我得到的结果如下:

enter image description here

以下是drawText行注释掉的情况,因为该行只显示了正确计算的边界矩形:

enter image description here

我正在寻找它:

enter image description here

其中&#34;你好!&#34;是缩放的SVG项目,以适当地适应边界矩形区域。我认为通过将viewBox设置为与边界矩形相同的大小,我在一个点上工作,但现在它不能正常工作,除非我将边界矩形缩放为更小。

我也尝试在<svg>标签上设置宽度和高度,但这并没有什么区别。

我做错了吗?

0 个答案:

没有答案