首页 > 其他分享 >QT坐标系转换(将QPainter左上角为原点的坐标系转换为正常坐标系)

QT坐标系转换(将QPainter左上角为原点的坐标系转换为正常坐标系)

时间:2023-09-04 15:44:15浏览次数:44  
标签:pPainter 转换 QT 原点 50 100 szGraphic 坐标系

没有复杂的变换,简单转化窗口坐标系,即可按我们正常熟知的坐标系进行绘图

QPainter坐标系以左上角为原点,如下图

 

在这样的坐标系下绘图,位置这是倒过来的

QPainter m_pPainter(this);

    m_pPainter.setBrush(Qt::yellow);

    m_pPainter.drawRect(0, 0, 50, 50);

    m_pPainter.translate(100, 100); //将点(100,100)设为原点

    m_pPainter.setBrush(Qt::red);

    m_pPainter.drawRect(0, 0, 50, 50);

 

要将QT坐标系转换为我们正常认知的坐标系,如下图

 

只需要一行代码m_pPainter.setWindow(0, this->height(), this->width(), -(this->height()));

增加窗口坐标系转换后,则按照我们正常认知的坐标系进行绘制,绘图效果如下图

QPainter m_pPainter(this);

    m_pPainter.setWindow(0, this->height(), this->width(), -(this->height()));

    m_pPainter.setBrush(Qt::yellow);

    m_pPainter.drawRect(0, 0, 50, 50);

    m_pPainter.translate(100, 100); //将点(100,100)设为原点

    m_pPainter.setBrush(Qt::red);

    m_pPainter.drawRect(0, 0, 50, 50);

 

若原点不为(0,0),原点坐标为(x,y),通过以下代码即可完成转换

    QPoint m_ptOriginal;

    m_ptOriginal.setX(x);

    m_ptOriginal.setY(y);

   QSize m_szGraphic;

    m_szGraphic.setWidth(nx);

    m_szGraphic.setHeight(ny);

m_pPainter->setWindow(-m_ptOriginal.x(), m_ptOriginal.y(), m_szGraphic.width(), -m_szGraphic.height());

 

from:https://blog.csdn.net/limelove/article/details/114013715

标签:pPainter,转换,QT,原点,50,100,szGraphic,坐标系
From: https://www.cnblogs.com/im18620660608/p/17677239.html

相关文章

  • ZLMeidaKit在Windows上启动时:计算机中丢失MSVCR110.dll,以及rtmp推流后无法转换为flv
    场景ZLMediaKit在Windows上实现Rtmp流媒体服务器以及模拟rtmp推流和http-flv拉流播放:https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/130221608按照以上教程启动MediaServer.exe时提示:无法启动此程序,因为计算机中缺失MSVCR110.dll,尝试重新安装程序以解决此问题......
  • VS+Qt工具vsaddin
    1.https://download.qt.io/official_releases/vsaddin/2.ToolsExtensions-VisualStudio 安装:C:\xxxx\VSIXInstaller.exexxx.vsix......
  • 将MySQL分区表转换成普通表
    将MySQL分区表转换成普通表MySQL支持分区表,这种表可以将数据分散到多个存储区中。但是,有时候我们可能需要把分区表转换成普通表,本文将介绍如何完成这个操作。备份数据在进行任何表修改操作前,都需要先进行数据备份。在备份数据之前,需要关闭所有对该表的写入操作。取消分区要将分区表......
  • MODBUS RTU协议中浮点数是如何存储,读到浮点数寄存器的数值如何转换成所需的浮点数
    原文链接浮点数保存的字节格式如下:地址+0+1+2+3内容SEEEEEEEEMMMMMMMMMMMMMMMMMMMMMMM这里S代表符号位,1是负,0是正E偏移127的幂,二进制阶码=(EEEEEEEE)-127。M24位的尾数保存在23位中,只存储23位,最高位固定为1。此方法用最较少的位数实现了较高的有效位数,提高了......
  • 【Qt初入江湖】Qt QSqlQueryModel 底层架构、原理详细描述
    鱼弦:全栈领域创作新星创作者、51CTO(Top红人+专家博主)、github开源爱好者(go-zero源码二次开发、游戏后端架构https://github.com/Peakchen) QtQSqlQueryModel是Qt中用于实现自定义SQL查询的模型类,它继承自QAbstractTableModel。QSqlQueryModel封装了对数据库查询结果的处理,可......
  • 【Qt初入江湖】Qt QSqlRelationalDelegate 底层架构、原理详细描述
    鱼弦:全栈领域创作新星创作者、51CTO(Top红人+专家博主)、github开源爱好者(go-zero源码二次开发、游戏后端架构https://github.com/Peakchen) Qt的QSqlRelationalDelegate类是用于在Qt模型/视图框架中使用带有外键关系的数据库表格数据的委托类。它提供了一组用于在表格视图......
  • Java:commons-codec实现byte数组和16进制字符串转换
    目录commons-codec实现原理封装StringUtil类commons-codec文档https://commons.apache.org/proper/commons-codec/https://mvnrepository.com/artifact/commons-codec/commons-codec坐标<dependency><groupId>commons-codec</groupId><artifactId>com......
  • js:10进制和2进制进行转换
    目录用到的函数进制转换示例用到的函数1、parseInt文档:https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/parseInt定义//解析一个字符串并返回指定基数的十进制整数intparseInt(string,radix)参数string要被解析的值。如果参数不是一个......
  • Qt中两个QLabel标签控件重叠的方法
       在项目中遇到这样的问题,需要开发一个电池控件,显示电量同时又能以数字标注电量的多少。效果如下图所示:      通常在Qt中图片的显示是用的QLabel标签控件。根据以往MFC开发的经验,想当然的是两个标签控件重叠排放,下面的标签控件显示图片,上面的标签控件显示数字。但......
  • Python练习:嵌套列表解析,讲3*4的矩阵转换成4*3的矩阵
      1#嵌套列表解析,讲3*4的矩阵转换成4*3的矩阵23matrix=[[1,2,3,4],4[5,6,7,8],5[9,10,11,12]]678forrowinmatrix:9print("遍历每一行:",row)101112print("\n")1314s=[[row[i]forrow......