# Qt绘图类介绍
Qt提供了一套强大的2D绘图系统,主要通过QPainter类和相关辅助类来实现。以下是Qt中主要绘图类的介绍:
核心绘图类
1. QPainter
Qt绘图系统的核心类,提供在绘图设备上绘制的功能
支持绘制基本图形(点、线、矩形、椭圆、多边形等)
支持变换(平移、旋转、缩放)
支持画笔(QPen)和画刷(QBrush)设置
支持抗锯齿等渲染提示
基本用法:
void MyWidget::paintEvent(QPaintEvent *event)
{
QPainter painter(this);
painter.setPen(Qt::blue);
painter.drawLine(0, 0, width(), height());
}
2. QPaintDevice
所有可绘制对象的基类
派生类包括:QWidget、QPixmap、QImage、QPrinter等
3. QPaintEngine
提供QPainter与特定绘图设备的接口
通常不需要直接使用
绘图工具类
1. QPen
定义如何绘制图形的轮廓(线条)
可以设置颜色、宽度、线型(实线、虚线等)、端点样式等
QPen pen(Qt::green, 3, Qt::DashLine, Qt::RoundCap, Qt::RoundJoin);
painter.setPen(pen);
2. QBrush
定义如何填充图形内部
可以设置颜色、填充模式(纯色、渐变、纹理等)
QBrush brush(Qt::red, Qt::Dense4Pattern);
painter.setBrush(brush);
3. QColor
表示颜色,支持RGB、HSV等多种颜色空间
支持透明度设置
基本图形类
1. QPoint/QPointF
表示2D点(整数/浮点坐标)
2. QLine/QLineF
表示线段
3. QRect/QRectF
表示矩形
4. QPolygon/QPolygonF
表示多边形
5. QPainterPath
表示复杂的绘图路径,可以包含直线、曲线等多种元素
支持布尔运算(并、交、差等)
高级绘图功能
1. 变换(QTransform)
支持平移、旋转、缩放、剪切等2D变换
painter.translate(100, 100);
painter.rotate(45);
painter.scale(1.5, 1.5);
2. 渐变(QGradient)
线性渐变(QLinearGradient)
径向渐变(QRadialGradient)
锥形渐变(QConicalGradient)
QLinearGradient gradient(0, 0, 100, 100);
gradient.setColorAt(0, Qt::white);
gradient.setColorAt(1, Qt::black);
painter.setBrush(gradient);
3. 图像绘制(QImage, QPixmap)
QImage:用于I/O操作和像素级访问
QPixmap:用于屏幕显示,优化性能
QPixmap pixmap("image.png");
painter.drawPixmap(10, 10, pixmap);
绘图设备
1. QWidget
最常见的绘图设备,通过重写paintEvent()实现自定义绘制
2. QPixmap
离屏像素图,适合在屏幕上显示
3. QImage
独立于硬件的图像表示,适合像素操作和文件I/O
4. QPicture
记录和重放QPainter命令
5. QPrinter
用于打印和PDF输出
图形视图框架(高级)
对于复杂的图形应用,Qt还提供了Graphics View框架:
QGraphicsScene:管理图形项的场景
QGraphicsView:显示场景的视图
QGraphicsItem:场景中的图形项基类
这套框架适合需要管理大量图形对象、支持交互、需要高效渲染的场景。
总结
Qt的绘图系统功能强大且灵活,从简单的2D图形到复杂的自定义控件都能胜任。掌握QPainter和相关类的使用是Qt图形编程的基础,对于需要更高级功能的场景,可以考虑使用Graphics View框架。