`
king_tt
  • 浏览: 2113677 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

Qt坐标系统

 
阅读更多

坐标变换

World Corrdinates

==>

Window Coordinates

==>

Device Coordinates

(逻辑坐标)

世界变换

中间态坐标

窗口视口变换

(物理坐标)

在默认情况下,3个坐标系是一致的。

世界变换

世界变换直接相关的函数:

QPainter::setWorldMatrixEnabled

启用、禁用世界变换

QPainter::setWorldTransform

设置世界变换

QPainter::worldTransform

获取当前

QPainter::resetTransform

重置为QTransform()

4个常用的函数

QPainter::translate

平移

QPainter::scale

缩放

QPainter::rotate

旋转

QPainter::shear

剪切

注:它们通过直接调用的QTransform的相应成员直接修改世界变换

void QPainter::scale(qreal sx, qreal sy)
{
...
d->state->worldMatrix.scale(sx,sy);
...
}

世界变换的两个马甲:

QPainter::setTransform

QPainter::transform

void QPainter::setTransform(const QTransform &transform, bool combine )

{
setWorldTransform(transform, combine);

}

废弃的函数(Qt4.3开始,QTransform取代了QMatrix的位置,下列函数已不建议使用)

QPainter::setWorldMatrix

QPainter::worldMatrix

...

窗口视口变换

直接相关:

QPainter::setViewTransformEnabled

启用、禁用视口变换

QPainter::viewTransformEnabled

返回 视口变换的状态

QPainter::setViewport

设置视口(物理坐标)

QPainter::setWindow

设置窗口(与视口是同一矩形,中间态坐标)

该变换是简单的线性变换。

复合变换

窗口视口变换和世界变换的复合:

QPainter::combinedTransform

QTransform QPainter::combinedTransform() const

{
Q_D(const QPainter);
return d->state->worldMatrix * d->viewTransform();

}

典型应用:对鼠标事件的响应中,将坐标从物理坐标变换成QPainter需要的逻辑坐标

仿射变换、透射变换

Qt4.3(包括)之前的QMatrix只支持仿射变换(Affine transformation)

平移(Translation)

缩放(Scale

旋转(Rotation

剪切(Shear)

QTransform支持透射变换(perspective transformation)

m11

m12

m13

m21

m22

m23

m31
dx

m32
dy

m33

变换关系:

x' = m11*x + m21*y + dx
y' = m22*y + m12*x + dy
if (is not affine)

{
w' = m13*x + m23*y + m33
x' /= w'
y' /= w'

}

相关知识:

射影几何学仿射几何学微分几何学

参考

http://doc.qt.nokia.com/4.7/qtransform.html

http://doc.qt.nokia.com/4.7/qpainter.html

http://doc.qt.nokia.com/4.7/coordsys.html

分享到:
评论

相关推荐

    Qt坐标系统与图形绘制

     为了能够使用Qt开发图形绘制软件,首先应该掌握Qt的坐标系统。在Qt中,通过QPainter类来控制它的坐标系统。连同QPaintDevice类与QPaintEngine类,QPainter类构成了Qt绘图系统的基础。其中,QPainter用于执行绘图的...

    qt坐标系详细讲解

    qt 2d绘图的资料,里面包含了坐标机制,很详细

    【Qt】2D绘图之坐标系统.rar

    【Qt】2D绘图之坐标系统.rar

    EDA/PLD中的Qt坐标系统与图形绘制

     为了能够使用Qt开发图形绘制软件,首先应该掌握Qt的坐标系统。在Qt中,通过QPainter类来控制它的坐标系统。连同QPaintDevice类与QPaintEngine类,QPainter类构成了Qt绘图系统的基础。其中,QPainter用于执行绘图的...

    QT经典教程_详细一步一步例子

    十七、Qt 2D绘图(七)Qt坐标系统深入 十八、Qt 2D绘图(八)涂鸦板 十九、Qt 2D绘图(九)双缓冲绘图简介 二十、Qt 2D绘图(十)图形视图框架简介 二十一、Qt数据库(一)简介 二十二、Qt数据库(二)添加MySQL...

    XY.zip_qt 笛卡尔坐标_qt系统

    本程序实现在不同的笛卡尔坐标系统中旋转变换。

    QT creator 教程

    十七、Qt 2D绘图(七)Qt坐标系统深入 十八、Qt 2D绘图(八)涂鸦板 十九、 Q t 2D 绘图(九)双缓冲绘图简介 二十、Qt 2D绘图(十)图形视图框架简介 二十一、Qt数据库(一)简介 二十二、Qt数据库(二)添加MySQL...

    QT-坐标系统和坐标变换-绘制曲线应用程序示例

    为了实现更方便的坐标,QPainter还提供了视口(Viewport)和窗口(Window)坐标系,通过QPainter内部的坐标变换矩阵自动转换为绘图设备的物理坐标。视口表示绘图设备的任意一个矩形区域的物理坐标,可以只选取物理坐标...

    QT-坐标系统和坐标变换-绘图叠加效果应用程序示例

    为了实现更方便的坐标,QPainter还提供了视口(Viewport)和窗口(Window)坐标系,通过QPainter内部的坐标变换矩阵自动转换为绘图设备的物理坐标。视口表示绘图设备的任意一个矩形区域的物理坐标,可以只选取物理坐标...

    QT-坐标系统和坐标变换-绘制三个五角星应用程序示例

    运行samp8_2实例程序,展示绘图效果,第1个是原始的五角星;第2个是缩小为0.8倍,顺时针旋转90度的五角星;第3个是逆时针旋转145度的五角星。这个程序中使用到了QPainterPath和QPainter的坐标变换功能。

    Linux qt 模拟鼠标获取坐标 自动点击 ubuntu22.04系统

    Linux下qt工程 鼠标自动点击的功能在windows下调用WindowsAPI能够简单实现 但在linux实现并无现成api 因此自己编写了一个 能够获取当前鼠标位置并模拟自动点击,(不限制在本widget界面范围内,能够获取全局坐标值...

    QT编写程序,实现一个坐标轴功能

    采用QT软件编写,在linux系统软件下编写,主要实现在功能,画出一个坐标轴功能。采用软件可以直接打开运行!

    黑马程序员Qt全解教程.zip

    4 Qt窗口系统 21 4.1 Qt窗口坐标体系 21 坐标体系 21 4.2 QWidget 21 4.2.1 对象模型 21 4.3 QMainWindow 23 4.3.1 菜单栏 24 4.3.2 工具栏 25 4.3.3 状态栏 25 4.4 资源文件 26 4.5 对话框QDialog 29 4.5.1 基本...

    QT5.9 利用 QWebEngineView / QWebChannel 调用JS程序实现QT与HTML网页数据交互,加载百度地图并与地图交互数据

    QT5.9 利用 QWebEngineView / QWebChannel 调用...3.鼠标点击地图页后会提示点的坐标信息,并回传给QT,通过qDebug()显示(JS调用C++)。 详细说明: https://blog.csdn.net/qq_43569273/article/details/88122422

    QT5实现获取屏幕坐标,按输入时间实现鼠标连点,系统键盘控制

    QT5实现获取屏幕坐标,按输入时间实现鼠标连点,获取系统键盘控制。

    qt必备学习手册初级

    4.1 Qt窗口坐标体系 21 坐标体系 21 4.2 QWidget 21 4.2.1 对象模型 21 4.3 QMainWindow 23 4.3.1 菜单栏 24 4.3.2 工具栏 25 4.3.3 状态栏 25 4.4 资源文件 26 4.5 对话框QDialog 29 4.5.1 基本概念 29 4.5.2 标准...

    Qt学习之路2 (基于Qt5.0.1共58章)

    28. 坐标系统 29. 绘制设备 30. Graphics View Framework 31. 贪吃蛇游戏(1) 32. 贪吃蛇游戏(2) 33. 贪吃蛇游戏(3) 34. 贪吃蛇游戏(4) 35. 文件 36. 二进制文件读写 37. 文本文件读写 38. 存储容器 39. 遍历...

Global site tag (gtag.js) - Google Analytics