QPainter 能绘制点、直线、圆、矩形等各种基本图形,还可以绘制文字和位图,用这些基本图形可以组成任何想要的图形。
QPainter绘图主要有以下概念
1.绘图设备
绘图设备包括 QWidget、 QPixmap、QPrinter 等。 QWidget 是最常见的绘图设备,所有的界面组件都是从 QWidget 继承而来的,界面组件的显示效果实际上是 QPainter 在 QWidget 上实现的。
| QWidget | QWidget 是所有界面组件的基类,是最常见 的绘图设备类, 它有 QPaintDevice 和 QObject 两个父类,所以支持 Qt 的元对象系统。 |
| QImage | QImage 是与件无关的表示图片的类,是为设备输入输出而优化设计的类,它可以直接进行图片像素数据的访问和操作。 |
| QPixmap | QPixmap 是为在屏幕上显示图片而优化设计的类。 |
| QBitmap | QBitmap 是 QPixmap 的子类,用于表示 1 位色深的单色位图。 |
| QPicture | QPicture 是用于记录和回放 QPainter 指令的类。 |
| QSvgGenerator | QSvgGenerator 是用于创建 SVG 图形的绘图设备类,可缩放矢量图形( scalable vectorgraphics, SVG)是一种图片文件格式。使用 QPainter 可以在一个 QSvgGenerator 对象上绘图, 并能将其直接保存为 SVG 文件。 Qt 还提供了显示 SVG 图片文件的组件类 QSvgWidget。 |
| QOpenGLPaintDevice | QOpenGLPaintDevice 是能用 OpenGL 渲染 QPainter 绘图指令的绘图设备类,它需要系统支持 2.0 以上版本的 OpenGL 或 OpenGL ES。 |
| QPagedPaintDevice | QPagedPaintDevice 是支持多个页面的绘图设备类,通常用于生成打印输出或 PDF 文件。QPrinter 是用于打印输出的类,打印输出实际上就是在 QPrinter 设备上绘图,可以生成一系列用于打印输出的页面。 QPdfWriter 是用于生成 PDF 文件的绘图设备类,使用 QPrinter在 QPdfWriter 设备上绘图就可以将绘图内容直接保存为 PDF 文件。 |
相关类
| 类 | 用途 |
| QPainter类 | 用 QPainter 在绘图设备上绘图主要是指用 QPainter 的接口函数绘制各种基本图形,包括点、直线、圆、矩形、多边形、文字等。图形的线条特性、颜色特性、文字特性由 3 个类的特性决定。 |
| QPen 类 | 用于控制线条的颜色、宽度、线型等。 |
| QBrush 类 | 用于设置一个区域的填充特性,包括填充颜色、填充样式、渐变特性等,还 可以采用图片进行材质填充。 |
| QFont 类 | 用于设置文字的字体、样式、大小等属性。 |
2.绘图事件paintEvent
需要在绘图事件paintEvent中,里创建一个 QPainter 对象来获取绘图设备的接口,然后用这个 QPainter 对象在绘图设备上绘图。
3.绘图过程
声明painter
QPainter painter(this);
painter.setRenderHint(QPainter::Antialiasing);//抗锯齿 高保真
painter.setRenderHint(QPainter::TextAntialiasing);
设置画笔
QPen pen;
pen.setWidth(3);//线粗
pen.setColor(Qt::red);//线条 颜色
pen.setStyle((Qt::SolidLine));//实线
pen.setCapStyle(Qt::FlatCap);//线的端点样式
pen.setJoinStyle(Qt::BevelJoin);//两节点样式
painter.setPen(pen);
设置画刷
QBrush brush;
brush.setColor(Qt::green);
brush.setStyle(Qt::SolidPattern);//画刷填充样式
painter.setBrush(brush);
绘图命令
int W = this->width();
int H = this->height();
QRect rect(W/4,H/4,W/2,H/2);
painter.drawRect(rect);
结果

295

被折叠的 条评论
为什么被折叠?



