Qt 绘图坐标系转换

先上一段代码,简单的画了个实心矩形
    QPainter paint(this);paint.setBrush(Qt::yellow);paint.drawRect(0.0, 0.0, 100, 100);   //绘制原点为(0.0,0.0),长宽为100的矩形

效果如图:

现在说到绘图内的坐标系转换,Qt可用translate方法变换坐标原点,函数声明为:
void QPainter::translate(const QPointF &offset)
参数offset为新的坐标原点,原点可精确到小数;
void QPainter::translate(const QPoint &offset)
参数offset为新的坐标原点,原点只能精确到整数;
void QPainter::translate(qreal dx, qreal dy)
参数dx为新的坐标原点x,dy为新的坐标原点y,类型为qreal,即为double。

值得一提的是在转换坐标原点前需要先调用save方法保存当前坐标系原点,再转换坐标原点后需调用restore方法恢复之前保存的坐标系。如下代码:

    paint.save();      //保存当前坐标系paint.translate(QPointF(100, 100));   //设置坐标系原点为(100,100)paint.drawRect(0.0, 0.0, 100, 100);   //绘制原点为(0.0,0.0),长宽为100的矩形paint.restore();   //恢复坐标原点

效果如图:

这里需要注意的是转换坐标原点后,在未恢复时,当前的坐标都是基于转换后的坐标原点后的坐标。
若是在转换坐标系前未保存坐标系也没有关系,此时需要手动设置还原坐标系原点,代码如下:

    paint.translate(QPointF(100.0, 100.0));paint.drawRect(0.0, 0.0, 100, 100);paint.translate(QPointF(-100.0, -100.0));  //转换坐标系原点paint.drawRect(0.0, 0.0, 100, 100);

(-100.0,-100.0)即为之前的坐标原点(0,0)。
效果如下:

今天的分享记录就到这里,希望对大家有所帮助。
下一篇文章介绍Qt的旋转机制。

Qt 绘图坐标系转换相关推荐

  1. 使用Qt绘图制作一个钟表

    使用Qt绘图制作一个钟表 实际效果如下: 一.钟表实现的大概思路 设置定时器,定时器每隔一秒调用repaint()函数,paintEvent()函数随即被调用,利用paintEvent()函数重绘钟表 ...

  2. Qt绘图:求圆和椭圆上任意角度点的坐标

    (2021-2-11 之前把笛卡尔坐标的 x 和 y 标注反了,已修正) 0.圆相关公式 在笛卡尔坐标系上,一个标准的圆是这样的: 已知圆心坐标 (x0,y0),半径 R,角度 a,则圆边上点(x', ...

  3. 高德,百度,Google地图定位偏移以及坐标系转换

    本文引用地址 一.地图坐标系解释 在进行地图开发过程中,我们一般能接触到以下三种类型的地图坐标系: WGS-84原始坐标系,一般用国际GPS纪录仪记录下来的经纬度,通过GPS定位拿到的原始经纬度,Go ...

  4. 基于Hi3516AV200/Hi3519V101的Qt绘图优化

    首先,Qt5.X移植到海思平台以及linuxfb插件的修改可以参考https://www.cnblogs.com/chay/p/10431403.html一文,本文介绍的优化过程与之相似,只是结合了具 ...

  5. GNSS系列--GNSS坐标系转换

    大部分内容来自<http://onemo10086.com/#/school/article/165>   "GNSS定位不准确,漂移了好几公里,是怎么回事呢?"相信有 ...

  6. 【Java代码】坐标系说明+WGS84\GCJ02\BD09坐标系转换工具+Java坐标系转换及验证源代码分享(粘贴可用)

    1. 坐标系说明 开发地图应用服务时,一定会接触到各种坐标系,而保证坐标系的正确与合理是一切数据分析的前提,总的来说,坐标系可以分为两大类:地理坐标系GCS(Geographic Coordinate ...

  7. threejs中坐标系转换和实现物体跟随鼠标移动

    坐标系转换 下面函数可以将鼠标所在点的屏幕坐标转化成一个Threejs三维坐标: convertTo3DCoordinate(clientX,clientY){var mv = new THREE.V ...

  8. Qt文件编码转换工具(三) Qt界面设计

    目录 下载链接 上一节为C++判断文件编码 本节为Qt界面设计 下载链接 Realase打包版本下载: Qt文本转化工具 realase版本 https://download.csdn.net/dow ...

  9. Qt文件编码转换工具(二) C++判断文件编码

    目录 下载链接 上一节 如何判断文件编码 下一节 下载链接 Realase打包版本下载: Qt文本转化工具 realase版本 https://download.csdn.net/download/q ...

最新文章

  1. 没有什么不可能(1)
  2. 网路神警上网行为管理系统 v3.4.5官方版
  3. mysql 列目录_Linux ls命令:查看目录下文件
  4. 永不示弱_永不过时的网页设计:今天和2000年的在线投资组合
  5. openresty 前端开发进阶一之http后端
  6. 微型计算机2014年9月下,2014年9月计算机应用基础》网络教育统考真题.doc
  7. linux mint 安装内核,使用Ukuu在Ubuntu/Linux Mint上安装Linux Kernel 5.0的方法
  8. CmsEasy可视化编辑商城系统源码
  9. Qt SQL 学习笔记二:qt建立数据库,创建和操纵表
  10. 个人小程序 给头像戴圣诞帽
  11. 访问页面出错:The requested URL / was not found on this server. 网站打开出现404
  12. ROS2进阶:安装与初体验(附choco介绍)
  13. Raspberry Pi3驱动Oled ssh1106屏
  14. OSPF状态切换以及包内容的交互,以及如何根据LSDB还原单区域拓扑
  15. 一篇文章,搞懂自动化行业现状
  16. WebStorm 的全局搜索字符串
  17. 纳豆红曲胶囊价格作用怎么样!
  18. VS Code,PyCharm与GitHub同步
  19. 经济学基础(本)【3】
  20. 管理服务器维护外包,运维外包管理

热门文章

  1. 无用而有趣的Linux终端彩蛋
  2. 第十一课用计算机写作教案,计算机教案
  3. day21:shell
  4. 用COSMIC方法帮助澄清需求的案例
  5. L1-033 出生年 (15 分)(简单解法)
  6. 优思学院|六西格玛基础知识|马上就学会
  7. .Net验证18位身份证格式
  8. linux压测工具stress和stress-ng下载
  9. java爬取网页数据_利用Python做数据分析—对前程无忧数据类岗位进行分析
  10. 各种虚拟化镜像文件格式