如何使用画家类绘制svg图形

问题描述 投票:0回答:1

我正在尝试学习如何使用绘图功能。到现在为止,我已经能够使用QPainter类在QWidget上绘制一些圆形,如下所示:

在MainWindow.h中,我添加了:

 virtual void paintEvents(QPaintEvent *event); 

然后在MainWindow.cpp中添加:

void MainWindow::paintEvents(QPaintEvent *event) {
    QPainter painter(this);
    painter.drawEllipse( 305, 55, 475, 475 );
    painter.drawEllipse( 320, 70, 445, 445 );
    painter.end();
}

这会以像素为单位画一些圆圈,但我需要svg。那么我该如何使用QPainter类来绘制svg圆呢?

c++ qt qpainter
1个回答
0
投票

您可以使用Qt SVG module。如果使用qmake,则将QT += svg添加到.pro文件中,然后就可以使用SVG类。然后,您可以利用QSvgRenderer与您的QPainter实例一起绘制svg文档,例如:

#include <QSvgRenderer>
...
void MainWindow::paintEvents(QPaintEvent *event) {
    QPainter painter(this);
    QSvgRenderer svgr("/path/to/img.svg");
    svgr.render(&painter);
    painter.end();
}

根据文档render方法还有另外两个重载,这些重载使您可以控制在哪里渲染什么。您可能还希望从QByteArray或具有适当构造函数或加载方法的XML流中加载svg内容。

© www.soinside.com 2019 - 2024. All rights reserved.