QPainter和QPainterPath简单应用

Qt提供了非常方便和强大的绘画功能,也可以结合OpenGL等引擎使用。

头文件:

#include <QPainter>
#include <QPainterPath>

在头文件中引用

public:
    explicit myDialog2(QWidget *parent = nullptr);
    ~myDialog2();
    virtual void paintEvent(QPaintEvent *event);

之后在paintEvent函数中可以加入要绘画的内容:

void myDialog2::paintEvent(QPaintEvent *event)
{
    QPainter textPainter;
    textPainter.begin(this);
    textPainter.setFont(QFont("Times", 24, QFont::Bold));
    textPainter.drawText(QPoint(50, 50), "测试");
    textPainter.end();

    QPainter linePainter;
    linePainter.begin(this);
    linePainter.drawLine(QPoint(50, 60), QPoint(100, 100));
    linePainter.end();

    QPen ellipsePen;;
    ellipsePen.setColor(Qt::red);
    ellipsePen.setStyle(Qt::DashDotLine);

    QPainter ellipsePainter;
    ellipsePainter.begin(this);
    ellipsePainter.setPen(ellipsePen);
    ellipsePainter.drawEllipse(QPoint(80, 200), 50, 20);
    ellipsePainter.end();

    QPainterPath rectPath;
    rectPath.addRect(QRect(150, 20, 100, 50));
    QPainter pathPainter;
    pathPainter.begin(this);
    pathPainter.setPen(QPen(Qt::red, 1, Qt::DashDotLine, Qt::FlatCap, Qt::MiterJoin));
    pathPainter.setBrush(Qt::yellow);
    pathPainter.drawPath(rectPath);
    pathPainter.end();

    QImage image;
    image.load("D:/pic/lena.jpg");
    QPainter imagePainter;
    imagePainter.begin(this);
    imagePainter.drawImage(QPoint(150, 150), image);
    imagePainter.end();
}

结果如下:

多谢,亲爱的美美。

猜你喜欢

转载自blog.csdn.net/islinyoubiao/article/details/113750855