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();
}
结果如下:
多谢,亲爱的美美。