QT之QMatrix

2023-12-14 20:57:05

成员函数介绍

reset():将矩阵重置为单位矩阵(无变换)。
translate():执行平移变换。例如,translate(qreal dx, qreal dy)将图形沿x轴和y轴方向分别平移dx和dy个单位。
scale():执行缩放变换。例如,scale(qreal sx, qreal sy)将图形在x轴和y轴方向分别缩放sx和sy倍。
rotate():执行旋转变换。例如,rotate(qreal angle)将图形旋转angle度。
shear():执行剪切变换。例如,shear(qreal sh, qreal sv)将图形沿x轴和y轴方向分别斜切sh和sv倍。
map():对给定的点进行矩阵变换。例如,map(qreal x, qreal y, qreal *tx, qreal *ty) const方法将对点(x,y)进行矩阵变换,并返回映射后的坐标位置。

使用注意

QMatrix只支持2D场景下的坐标系变换,如果需要在3D场景下进行坐标系变换,需要使用其他类,如QMatrix4x4等。
QMatrix的变换操作是累积的,即连续应用多个变换操作时,后一个操作会叠加到前一个操作上。
QMatrix可以与其他Qt类一起使用,如QPainter、QOpenGLWidget等,用于实现图元的放大缩小、图形的不规则展示、重复图形但有规律的绘制等等。
QMatrix的变换矩阵是按照列优先顺序存储的,即第一个元素为m11,第二个元素为m21,以此类推。

函数的使用

1)创建一个QMatrix对象,可以使用默认构造函数或者指定矩阵元素进行初始化。

QMatrix matrix;  
matrix.setMatrix(m11, m12, m21, m22, dx, dy);

2)使用QMatrix的方法进行图形变换操作,例如平移、旋转、缩放等。

matrix.translate(dx, dy); // 平移图形  
matrix.rotate(angle); // 旋转图形  
matrix.scale(sx, sy); // 缩放图形

3)将QMatrix应用到QPainter对象上,用于在绘制图形时实现变换效果。

QPainter painter;  
painter.begin(&image);  
painter.setMatrix(matrix); // 设置变换矩阵  
painter.drawRect(rect); // 绘制矩形  
painter.end();

4)可以使用QMatrix的map()方法对坐标点进行变换,得到变换后的坐标位置。

QPointF point(x, y);  
QPointF transformedPoint = matrix.map(point); // 将点按照当前矩阵进行变换

文章来源:https://blog.csdn.net/techenliu/article/details/135002832
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。