所以我使用一些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);
我得到的结果如下:
以下是drawText行注释掉的情况,因为该行只显示了正确计算的边界矩形:
我正在寻找它:
其中&#34;你好!&#34;是缩放的SVG项目,以适当地适应边界矩形区域。我认为通过将viewBox设置为与边界矩形相同的大小,我在一个点上工作,但现在它不能正常工作,除非我将边界矩形缩放为更小。
我也尝试在<svg>
标签上设置宽度和高度,但这并没有什么区别。
我做错了吗?