Qt绘图系统介绍
Qt中提供了强大的2D绘图系统,可以使用相同的API在屏幕和绘图设备上进行绘制,它主要基于QPainter、QPaintDevice和QPaintEngine这三个类.
QPainter用来执行绘图操作; QPaintDevice提供绘图设备,它是一个二维空间的抽象,可以使用QPainter在其上进行绘制; QPaintEngine提供了一些接口,可以用于QPainter在不同的设备上进行绘制。
在Qt绘图系统中,由QPainter来完成具体的绘制操作。QPainter一般在一个部件的重绘事件(Paint Event)的处理函数paintEvent()中进行绘制:
首先要创建QPainter对象;然后进行图形的绘制;最后销毁QPainter对象。
QPainter使用方式
1.QPainter构造函数中,parent指定绘图对象(设备);QPainter构造函数中自动调用begin函数,表明绘图开始,在QPainter的析构函数中调用end()函数结束绘制。
QRectF rectangle(10.0, 20.0, 80.0, 60.0);
int startAngle = 30 * 16;
int spanAngle = 120 * 16;
QPainter painter(this);
painter.drawArc(rectangle, startAngle, spanAngle);
2.构造时,不在构造函数中指定parent(绘图对象);显示调用begin(parent)指定绘图设备。
绘图结束时,显示调用end()函数。
QRectF rectangle(10.0, 20.0, 80.0, 60.0);
int startAngle = 30 * 16;
int spanAngle = 120 * 16;
QPainter painter;
painter.begin(this); //指定设备
painter.drawArc(rectangle, startAngle, spanAngle);
painter.end();
画笔与画刷
画笔指定图案的轮廓的样式
画刷指定图案的填充样式
画笔使用
//使用画笔,设置画笔的风格
QPen pen(Qt::red,6, Qt::DashDotLine, Qt::RoundCap, Qt::RoundJoin);
painter.setPen(pen);
painter.drawArc(rectangle, startAngle, spanAngle);
画刷使用
// 创建画刷,设置画刷的风格
QBrush brush(QColor(0, 0, 255), Qt::Dense4Pattern);
// 使用画刷
painter.setBrush(brush);
// 绘制椭圆
painter.drawEllipse(220, 20, 50, 50);