当前位置: 首页 > news >正文

QT------QPainter::save() 和 QPainter::restore() 的使用方法和作用。

painter.save()
作用:将当前 QPainter 的所有状态压入内部的状态栈中保存
保存的状态包括:
画笔(Pen)的设置(颜色、宽度、样式等)
画刷(Brush)的设置(颜色、样式等)
字体(Font)的设置
变换矩阵(Transformations)
视口(Viewport)和窗口(Window)设置
渲染提示(Render hints)
剪切区域(Clip region)
painter.restore()
作用:从状态栈中弹出最近保存的状态,并恢复到该状态
效果:撤销所有在 save() 之后对 painter 所做的设置更改
使用模式

void MyWidget::paintEvent(QPaintEvent *event)
{QPainter painter(this);// 初始状态(状态A)painter.setPen(Qt::black);painter.setBrush(Qt::white);painter.save(); // 保存状态A到栈中// 临时修改状态(变为状态B)painter.setPen(Qt::red);painter.setBrush(Qt::blue);painter.drawRect(10, 10, 100, 100); // 用红色边框蓝色填充绘制矩形painter.restore(); // 恢复为状态A(黑色笔,白色画刷)// 现在仍然是状态Apainter.drawRect(150, 10, 100, 100); // 用黑色边框白色填充绘制矩形
}

注意事项

  1. 必须成对使用
// 正确用法
painter.save();
// ... 绘图操作
painter.restore();// 错误用法:不匹配的save/restore
painter.save();
painter.save();
painter.restore();
// 缺少一个restore!
  1. 栈式结构(LIFO)
painter.save();    // 压入状态1
painter.save();    // 压入状态2
painter.save();    // 压入状态3painter.restore(); // 弹出状态3
painter.restore(); // 弹出状态2  
painter.restore(); // 弹出状态1
http://www.dtcms.com/a/523717.html

相关文章:

  • http trailer 与 http2
  • 有没有会计做兼职的网站wordpress获取文章
  • 中国人在国外做网站网站代理网站群建设 会议 主持
  • 在Ubuntu Linux安装brew 使用brew安装llama.cpp 运行文心Ernie大模型
  • 基于MATLAB/Simulink的风光储联合系统经M3C接入电网的低电压穿越仿真研究
  • CNCF Kepler与MCP:开启云原生绿色计算的人机协作新纪元
  • 昇腾NPU部署GPT-OSS-20B混合专家模型:从环境配置到性能优化的完整实践指南
  • java8中的‘+‘的使用注意事项
  • 德国莱茵金属公司使用Varjo XR-4创建虚拟现实培训解决方案
  • STM32的GPIOx_ODR,GPIOx_BSRR,GPIOx_BRR寄存器的区别与使用
  • 网站建设指南 菜鸟教程简历模板做的最好的是哪个网站
  • Prometheus + Alertmanager + 钉钉告警
  • 基于 Spring Boot + RabbitMQ 实现应用通信
  • docker一键部署prometheus和grafana
  • 《深入剖析TCP Socket API:从连接到断开的全链路解读》
  • 数据库连接池 HikariCP Spring官方内置连接池 配置简单 以性能与稳定性闻名天下
  • Flink Watermark(水位线)机制详解
  • wordpress wpadmin东莞seo网站建设公司
  • 刷赞网站怎么做WordPress编辑器加载慢
  • 【知识图谱】图神经网络(GNN)核心概念详解:从消息传递到实战应用
  • 系统与网络安全------弹性交换网络(5)
  • 车联网车云架构_信息分享01
  • 纯css实现任务头像叠加
  • B2122 单词翻转
  • Tailwind CSS Next.js实战(官方)Tailwind Demo、Tailwind教程
  • 建设个人博客网站做网站页面设计报价
  • 告别显卡焦虑:Wan2.1+cpolar让AI视频创作走进普通家庭
  • 浙人医创新开新篇——用KingbaseES数据库开创首个多院区异构多活容灾架构
  • openstock部署
  • 平替 MongoDB 实践指南 | 金仓多模数据库助力电子证照系统国产化改造