往期回顾
【QT进阶】Qt线程与并发之线程和并发的简单介绍-CSDN博客
Qt绘图与图形视图之绘图技术知识点的简单介绍
Qt提供了丰富的绘图技术,我们可以在界面上拖动鼠标,或者在代码里指定参数进行绘图
一、Qt绘图系统常用知识点
1、QPainter
QPainter是Qt中用于进行绘图操作的关键类。
通过QPainter可以进行各种绘图操作,包括绘制图形、文本、图像等。
它提供了一系列的绘图方法,如drawLine、drawRect、drawText等,用于绘制各种图形元素。
示例:在QWidget上绘制一个红色矩形:
void MyWidget::paintEvent(QPaintEvent *event) {
QPainter painter(this);
painter.fillRect(10, 10, 100, 100, Qt::red);
}
2、QPaintDevice
QPaintDevice是一个抽象类,是所有能够被QPainter绘制的对象的基类。
常见的QPaintDevice子类包括QWidget、QPixmap、QImage等,它们都可以作为绘图设备供QPainter使用。
示例:创建一个QImage对象并在其上绘制一条蓝色直线:
QImage image(200, 200, QImage::Format_RGB32);
QPainter painter(&image);
painter.drawLine(0, 0, 100, 100);
3、QPaintEngine
Qt提供了强大的绘图引擎,支持矢量图形绘制,可以实现平滑缩放和高分辨率显示。
支持绘制基本图形(如线条、矩形、椭圆、多边形等)、文本、图像等。
Qt中有多种不同的QPaintEngine的实现,用于支持不同的绘图系统,如基于OpenGL的绘图、基于PDF的绘图等。
而且我们通常不直接操作QPaintEngine,而是由QPainter间接管理。
4、绘图事件paintEvent()
在Qt中,绘图操作通常是在QWidget的paintEvent函数中进行的。
当窗口需要重绘时(如窗口大小改变、窗口被暂时遮挡后再次显示等),系统会发送绘图事件,然后调用paintEvent函数进行绘图操作。
示例:重写QWidget的paintEvent()函数,在窗口上绘制一段文本:
void MyWidget::paintEvent(QPaintEvent *event) {
QPainter painter(this);
painter.drawText(10, 10, "Hello, Qt!");
}
5、Qt坐标系
Qt中的坐标系原点通常位于左上角,x轴向右增长,y轴向下增长。
可以通过QPainter的translate函数进行坐标系的平移,从而实现坐标系的变换。
示例:在QWidget上绘制一个椭圆,以窗口左上角为起点:
void MyWidget::paintEvent(QPaintEvent *event) {
QPainter painter(this);
painter.drawEllipse(0, 0, 100, 50);
}
6、基本绘图元素
Qt中的基本绘图元素包括线条、矩形、椭圆、多边形、文本等。
可以使用QPainter提供的方法来绘制这些基本图形元素,从而实现各种绘图效果。
示例:在QWidget上绘制一个绿色矩形和一个蓝色椭圆:
void MyWidget::paintEvent(QPaintEvent *event) {
QPainter painter(this);
painter.fillRect(10, 10, 50, 50, Qt::green);
painter.setBrush(Qt::blue);
painter.drawEllipse(70, 10, 50, 50);
}
以上就是Qt里绘图技术知识点的简单介绍
都看到这里了,点个赞再走呗朋友~
加油吧,预祝大家变得更强!