QTransform 进行平移、旋转、镜像等操作

此文章为转载记录,如有侵权,请联系删除。

原文章地址:QT QTransform与QMatrix 有啥区别?QT QTransform 旋转 镜像 平移等操作-pudn.com

以下为文章全文:

刚开始学习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 进行平移、旋转、镜像等操作_第1张图片

QTransform:

 QTransform 进行平移、旋转、镜像等操作_第2张图片

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

具体的功能可以看下图:

QTransform 进行平移、旋转、镜像等操作_第3张图片

 

 

你可能感兴趣的:(qt,算法,qt,开发语言)