QGraphicsScene绘制网格背景方法汇总
一、通过设置背景画刷-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绘制网格背景方法汇总相关推荐
- Qt如何实现绘制网格背景
现有功能 使用滚轮缩放. 缩放到达一定阈值后恢复网格大小. 窗口大小调整时网格背景也自动调整重绘. 运行结果 源码 window.h #ifndef WINDOW_H #define WINDOW_H ...
- 华山论剑 --- 自定义UINavigationBar背景方法汇总
话说自古武林剑法门派繁多,所以就有了每年9月9日的华山论剑... iOS开发某些方面也是如此.拿自定义UINavigationBar这个很小的方面,也有N种方法,导致我在找寻答案的过程中走了很多弯路, ...
- html canvas绘制网格,canvas(七)绘制网格和坐标轴
###1.绘制网格 var canvas = document.querySelector("canvas") var ctx = canvas.getContext(" ...
- 教你用几何画板绘制网格
今天小编来教大家如何用几何画板绘制网格. 具体操作步骤如下: 1.在自定义工具栏中选择"迷你坐标系"--"石岩简易坐标系",绘制一个坐标系. 利用自定义工具绘制 ...
- 统计计量 | 统计学中常用的数据分析方法汇总
来源:数据Seminar本文约10500字,建议阅读15+分钟 统计学中常用的数据分析方法汇总. Part1描述统计 描述统计是通过图表或数学方法,对数据资料进行整理.分析,并对数据的分布状态.数字特 ...
- DataGridView使用方法汇总
DataGridView控件 DataGridView是用于Windows Froms 2.0的新网格控件.它能够代替先前版本号中DataGrid控件,它易于使用并高度可定制,支持许多我们的用户须要的 ...
- html图片上绘制网格线,如何使用html5和(canvas或svg)绘制网格
Tanzeel Kazi.. 10 我在canvas这里使用SO 发布我的代码,但我也在这里创建一个JSFiddle的工作示例. StackOverflow test bed function dra ...
- 使用c#制作打字游戏_使用打字稿iii绘制网格构建游戏4 5
使用c#制作打字游戏 Chapter III in the series of tutorials on how to build a game from scratch with TypeScrip ...
- 将一维数据(序列)转化为二维数据(图像)的方法汇总GAFS, MTF, Recurrence plot,STFT
将一维序列数据转化为二维图像数据的方法汇总 详细 全面 一.背景 二.方法介绍 格拉米角场 GAFs 原理 实现步骤 调用示例 马尔可夫变迁场 MTF 原理 实现步骤 调用示例 递归图 Recurre ...
最新文章
- 基于TransformerFusion的单目场景重构
- 深度学习核心技术精讲100篇(三十七)-利用Contrastive Learning对抗数据噪声:对比学习在微博场景的实践
- 第12课:优化神经网络——网络初始化技巧与超参数调试
- 解题:POI 2013 Triumphal arch
- 阿里P8亲自教你!Activity的6大难点,你会几个?年薪50W
- 「任性」的C语言之父:因拒付论文装订费错失博士学位,论文52年后重见天日...
- Java学习路线(完整详细版)
- datagridview单元格合并居中_系统地学习Excel第17课,设置单元格格式
- python字符串格式化符号含义及转义字符含义
- 一个浏览图片新闻的App
- 计算机声卡的步骤,声卡调试教程
- 2020.12.28Excel(数字到BZZ)
- 统计员工业绩app_一哥管家(员工绩效统计)app手机下载-一哥管家(员工绩效统计)安卓最新版下载1.0.8-闪电下载网...
- 【Windows 逆向】CE 地址遍历工具 ( CE 结构剖析工具 | 人物数据内存结构 | 人物三维坐标数据分析 )
- 脑电情绪识别资源整理
- 文章快速伪原创(怎么快速得到伪原创文章)
- 中国第一程序员——求伯君(二)
- vm打开虚拟机提示“未能启动虚拟机“解决方案
- 微信技术交流群两个月来的情况
- 正则表达式匹配豹子号和顺子号