欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 编程语言 > c/c++ >内容正文

c/c++

QT QTransform与QMatrix 有啥区别?

发布时间:2024/7/5 c/c++ 35 豆豆
生活随笔 收集整理的这篇文章主要介绍了 QT QTransform与QMatrix 有啥区别? 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

刚开始学习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支持的变换更丰富了~

具体的功能可以看下图:

 

转载于:https://www.cnblogs.com/MakeView660/p/10370947.html

创作挑战赛新人创作奖励来咯,坚持创作打卡瓜分现金大奖

总结

以上是生活随笔为你收集整理的QT QTransform与QMatrix 有啥区别?的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。