刚开始学习QT,我使用的是QT5.12进行开发,要不时地查阅QT的官方帮助文档~

仔细阅读QT官方帮助QTransform类以及QMatrix类,发现两个类的作用描述一模一样(“The QTransform class specifies 2D transformations of a coordinate system.”以及“The QMatrix class specifies 2D transformations of a coordinate system.”),它们两者有什么区别呢?

@

// Old code

QMatrix m;

m.translate(point.x(), point.y());

m.scale(-1.0, 1.0);

m.translate(-point.x(), -point.y());

item->setMatrix(m, true);

@

@

// New code

QTransform transform;

transform.translate(point.x(), point.y());

transform.scale(-1.0, 1.0);

transform.translate(-point.x(), -point.y());

item->setTransform(transform);

@

可能在QT4版本中使用QMatrix多一些,QT5中可能新引入了QTransform,所以在新版本的QT开发中更推荐使用QTransform!

QTransform 与 QMatrix 不同之处在于,它是一个真正的 3x3 矩阵,允许视角转换,QTransform 的 toAffine() 方法允许将 QTransform 转换到 QMatrix。如果视角转换已在矩阵指定,则转换将导致数据丢失。

QMatrix:

QTransform:

可见,对于QMatrix,m13和m23总是0,m33总是1,而这些元素在QTransform却是为了投影变换(projection transformation)来使用,可见QTransform相比于QMatrix支持的变换更丰富了~

具体的功能可以看下图:

最新文章

  1. 驱动实现led,pwm和中断基础知识
  2. <select> 标签使用
  3. 世界国家 的数据库sql
  4. 30分钟groovy快速入门并掌握(ubuntu 14.04+IntelliJ 13)
  5. Eclipse启动时出现错误 An internal error occurred during: “Updating indexes”
  6. C#插件构架实战 + Visual C#插件构架实战补遗(转)
  7. hdu Virtual Friends
  8. javascript面向对象规则汇总以及json
  9. MSSQL update 多表关联更新
  10. 精美舒适的对话消息提示框--第三方开源--SweetAlertDialog
  11. HttpHelper类使用方法
  12. Oracle数据库基础练习题
  13. 2019-04-15 Python中的面向对象学习总结
  14. ansible-task模块写法归类
  15. Too much thinking! Too much annoying.
  16. 从零开始学Kotlin-数据类型(2)
  17. 关于Unity的开发思路
  18. 最长斐波那契序列-LeetCode-873
  19. Caliburn micro 学习笔记...
  20. 【java】A local class access to local variables

热门文章

  1. [zigbee]zigbee的一些基础
  2. undefined reference to `clock_gettime'编译错误的解决办法
  3. Android——修改Button样式,动态修改Button中的图片大小
  4. MFC——CDC
  5. sparkR集群启动脚本的封装。
  6. TI webench 一款不错的软件
  7. getDimension()、getDimensionPixelOffset()和getDimensionPixelSize()区别详解
  8. 关于Unity中的世界坐标和局部坐标
  9. Eclipse中配置resin 4.x
  10. 【转】【MySQL】Mysql模糊查询like提速优化