一、通过设置背景画刷-QPixmap的方法

void ProjectScene::setGrid()
{if(showGrid) {//两条轴线QPolygonF myPolygon1;myPolygon1 << QPointF(0, 0) << QPointF(0, 128);QPolygonF myPolygon2;myPolygon2 << QPointF(0, 0) << QPointF(128, 0);//图像大小QPixmap pixmap(128, 128);pixmap.fill(Qt::transparent);QPainter painter(&pixmap);//虚线格式QVector<qreal> dashes;qreal space = 2;dashes << 2 << space << 2 << space;QPen pen1(Qt::lightGray, 2);pen1.setDashPattern(dashes);pen1.setWidth(2);painter.setPen(pen1);painter.translate(0, 0);painter.drawPolyline(myPolygon1);painter.drawPolyline(myPolygon2);painter.setPen(QPen(Qt::red, 4));painter.drawPoint(0,0);this->setBackgroundBrush(pixmap);}else {//图像大小QPixmap pixmap(128, 128);pixmap.fill(Qt::transparent);QPainter painter(&pixmap);this->setBackgroundBrush(pixmap);}
}

缺点:放缩视图,背景网格线会变的不均匀,例如:

这样在用户看来可能是很不美观的,目前不知道怎么调整。


二、重写void drawBackground(QPainter *painter, const QRectF &rect)

void ProjectScene::drawBackground(QPainter *painter, const QRectF &rect)
{QGraphicsScene::drawBackground(painter,rect);if(!isShowGrid)return;Q_UNUSED(rect);QPen pen;qreal left=rect.left();qreal right=rect.right();qreal top=rect.top();qreal bottom=rect.bottom();//边界值调整left = (left/128)*128;right = (right/128)*128;top = (top/128)*128;bottom = (bottom/128)*128;//    pen.setColor(QColor(0,0,0));
//    pen.setWidth(2);
//    pen.setStyle(Qt::SolidLine);
//    painter->setPen(pen);
//    //绘制坐标轴
//    painter->drawLine(left,0,right,0);
//    painter->drawLine(0,top,0,bottom);pen.setColor(QColor(60,60,60));pen.setWidth(0);pen.setStyle(Qt::DashLine);painter->setPen(pen);//绘制横线//绘制Y轴正半轴for(int i=0;i>=top;i-=128){painter->drawLine(left,i,right,i);}//绘制Y轴负半轴for(int i=0;i<=bottom;i+=128){painter->drawLine(left,i,right,i);}//绘制竖线//绘制X轴正半轴for(int i=0;i<=right;i+=128){painter->drawLine(i,top,i,bottom);}//绘制X轴负半轴for(int i=0;i>=left;i-=128){painter->drawLine(i,top,i,bottom);}
}

PS:此方法视图放缩,不会像使用背景画刷那样变得不均匀;

QGraphicsScene绘制网格背景方法汇总相关推荐

  1. Qt如何实现绘制网格背景

    现有功能 使用滚轮缩放. 缩放到达一定阈值后恢复网格大小. 窗口大小调整时网格背景也自动调整重绘. 运行结果 源码 window.h #ifndef WINDOW_H #define WINDOW_H ...

  2. 华山论剑 --- 自定义UINavigationBar背景方法汇总

    话说自古武林剑法门派繁多,所以就有了每年9月9日的华山论剑... iOS开发某些方面也是如此.拿自定义UINavigationBar这个很小的方面,也有N种方法,导致我在找寻答案的过程中走了很多弯路, ...

  3. html canvas绘制网格,canvas(七)绘制网格和坐标轴

    ###1.绘制网格 var canvas = document.querySelector("canvas") var ctx = canvas.getContext(" ...

  4. 教你用几何画板绘制网格

    今天小编来教大家如何用几何画板绘制网格. 具体操作步骤如下: 1.在自定义工具栏中选择"迷你坐标系"--"石岩简易坐标系",绘制一个坐标系. 利用自定义工具绘制 ...

  5. 统计计量 | 统计学中常用的数据分析方法汇总

    来源:数据Seminar本文约10500字,建议阅读15+分钟 统计学中常用的数据分析方法汇总. Part1描述统计 描述统计是通过图表或数学方法,对数据资料进行整理.分析,并对数据的分布状态.数字特 ...

  6. DataGridView使用方法汇总

    DataGridView控件 DataGridView是用于Windows Froms 2.0的新网格控件.它能够代替先前版本号中DataGrid控件,它易于使用并高度可定制,支持许多我们的用户须要的 ...

  7. html图片上绘制网格线,如何使用html5和(canvas或svg)绘制网格

    Tanzeel Kazi.. 10 我在canvas这里使用SO 发布我的代码,但我也在这里创建一个JSFiddle的工作示例. StackOverflow test bed function dra ...

  8. 使用c#制作打字游戏_使用打字稿iii绘制网格构建游戏4 5

    使用c#制作打字游戏 Chapter III in the series of tutorials on how to build a game from scratch with TypeScrip ...

  9. 将一维数据(序列)转化为二维数据(图像)的方法汇总GAFS, MTF, Recurrence plot,STFT

    将一维序列数据转化为二维图像数据的方法汇总 详细 全面 一.背景 二.方法介绍 格拉米角场 GAFs 原理 实现步骤 调用示例 马尔可夫变迁场 MTF 原理 实现步骤 调用示例 递归图 Recurre ...

最新文章

  1. 基于TransformerFusion的单目场景重构
  2. 深度学习核心技术精讲100篇(三十七)-利用Contrastive Learning对抗数据噪声:对比学习在微博场景的实践
  3. 第12课:优化神经网络——网络初始化技巧与超参数调试
  4. 解题:POI 2013 Triumphal arch
  5. 阿里P8亲自教你!Activity的6大难点,你会几个?年薪50W
  6. 「任性」的C语言之父:因拒付论文装订费错失博士学位,论文52年后重见天日...
  7. Java学习路线(完整详细版)
  8. datagridview单元格合并居中_系统地学习Excel第17课,设置单元格格式
  9. python字符串格式化符号含义及转义字符含义
  10. 一个浏览图片新闻的App
  11. 计算机声卡的步骤,声卡调试教程
  12. 2020.12.28Excel(数字到BZZ)
  13. 统计员工业绩app_一哥管家(员工绩效统计)app手机下载-一哥管家(员工绩效统计)安卓最新版下载1.0.8-闪电下载网...
  14. 【Windows 逆向】CE 地址遍历工具 ( CE 结构剖析工具 | 人物数据内存结构 | 人物三维坐标数据分析 )
  15. 脑电情绪识别资源整理
  16. 文章快速伪原创(怎么快速得到伪原创文章)
  17. 中国第一程序员——求伯君(二)
  18. vm打开虚拟机提示“未能启动虚拟机“解决方案
  19. 微信技术交流群两个月来的情况
  20. 正则表达式匹配豹子号和顺子号

热门文章

  1. 主成分分析的基本原理
  2. 也谈MCMC方法与Gibbs抽样
  3. php hash碰撞攻击与防御
  4. 线程池解析(三)——Worker源码解析
  5. 又有一家fintech初创公司估值直冲千亿美金!
  6. C++PTA习题总结(二)
  7. 【转载】SAP各模块字段与表的对应关系
  8. java 数组怎么求和_java数组求和怎么解决?有哪些方式?
  9. 分类器的sklearn交叉验证之我的理解
  10. pytorch:多标签分类的损失函数和准确率计算