2026/4/18 13:01:07
网站建设
项目流程
广州个人网站制作,南康建设局官方网站,济宁万达网站建设,上海cms建站模板QPainter 是 Qt 框架中用于执行 2D 图形绘制的核心类#xff0c;它本身不直接表示画布#xff0c;而是作用于 QPaintDevice#xff08;如 QWidget、QImage、QPixmap 等#xff09;之上。其“成员构成”可以从两个维度理解#xff1a;一、辅助绘图的成员对象#xff08;绘…QPainter是 Qt 框架中用于执行 2D 图形绘制的核心类它本身不直接表示画布而是作用于QPaintDevice如 QWidget、QImage、QPixmap 等之上。其“成员构成”可以从两个维度理解一、辅助绘图的成员对象绘图属性这些是QPainter内部维护的状态对象用于控制绘制样式成员类型作用常用设置方法QPen控制线条、轮廓的样式颜色、宽度、线型等setPen()/pen()QBrush控制填充区域的样式颜色、图案、渐变等setBrush()/brush()QFont控制文本绘制的字体setFont()/font()QTransform / QMatrix控制坐标系变换平移、旋转、缩放等translate(),rotate(),scale(),setWorldTransform()CompositionMode控制图像合成模式如叠加、正片叠底等setCompositionMode()RenderHint控制渲染质量提示如抗锯齿、平滑缩放等setRenderHint()Clip Region/Path定义裁剪区域限制绘制范围setClipRect(),setClipPath()Brush Origin定义画刷图案的起始偏移点setBrushOrigin()✅ 这些状态在调用begin()或构造QPainter(device)时会被重置为默认值。二、支持的绘图内容类型可绘制对象QPainter可以绘制以下类型的图形或内容绘制内容对应方法示例基本几何图形drawLine(),drawRect(),drawEllipse(),drawPolygon()路径复杂形状drawPath(const QPainterPath )文本drawText(),boundingRect()用于计算文本区域图像drawPixmap(),drawImage()自定义指令记录通过QPicture记录/重放绘图命令 注意QPixmap适合屏幕显示硬件加速QImage适合像素级操作和文件读写。三、关键成员函数分类1. 生命周期管理QPainter(QPaintDevice *device)构造并自动begin()bool begin(QPaintDevice *device)bool end()2. 状态保存与恢复save()/restore()压栈/弹栈当前所有绘图状态pen, brush, transform 等3. 坐标与视口控制setWindow()/setViewport()逻辑坐标 ↔ 设备坐标的映射worldMatrix()/setWorldTransform()全局坐标变换4. 裁剪控制setClipRect(),setClipPath(),setClipping(bool)5. 渲染优化提示painter.setRenderHint(QPainter::Antialiasing, true); painter.setRenderHint(QPainter::TextAntialiasing, true); painter.setRenderHint(QPainter::SmoothPixmapTransform, true);四、典型使用结构在paintEvent中void MyWidget::paintEvent(QPaintEvent *event) { QPainter painter(this); // 自动 begin(this) painter.setRenderHint(QPainter::Antialiasing); // 设置画笔和画刷 painter.setPen(QPen(Qt::blue, 2)); painter.setBrush(Qt::yellow); // 绘制一个圆 painter.drawEllipse(50, 50, 100, 100); // 绘制文本 painter.setFont(QFont(Arial, 16)); painter.drawText(60, 120, Hello QPainter); // 析构时自动调用 end() }总结QPainter的“成员构成”本质上是一组可配置的绘图状态Pen/Brush/Font/Transform 等一套丰富的绘图操作接口drawXXX对 QPaintDevice 的抽象访问能力它与QPaintDevice画布和QPaintEngine底层引擎共同构成 Qt 的2D 绘图系统三要素。如需更深入可结合QPainterPath实现复杂路径绘制或使用QPicture实现绘图指令的序列化与重放。