旋转后需要转换8个坐标信息,利用Qtransform 中的map函数如何转换
时间: 2024-02-12 15:03:51 浏览: 114
坐标旋转变换
如果需要对一个矩形框进行旋转,那么旋转后需要转换的坐标信息包括矩形框的四个顶点坐标和四个边上的中点坐标。可以使用QTransform类的map函数进行坐标转换。
以下是一个示例,假设我们需要将矩形框的四个顶点坐标和四个边上的中点坐标绕点(100, 100)顺时针旋转90度:
```c++
QTransform transform;
transform.translate(100, 100); // 将坐标系平移至旋转中心点
transform.rotate(90); // 顺时针旋转90度
QPointF topLeft(50, 50);
QPointF topRight(150, 50);
QPointF bottomLeft(50, 150);
QPointF bottomRight(150, 150);
QPointF leftCenter(50, 100);
QPointF rightCenter(150, 100);
QPointF topCenter(100, 50);
QPointF bottomCenter(100, 150);
// 对矩形框的八个坐标点进行转换
QPointF newTopLeft = transform.map(topLeft);
QPointF newTopRight = transform.map(topRight);
QPointF newBottomLeft = transform.map(bottomLeft);
QPointF newBottomRight = transform.map(bottomRight);
QPointF newLeftCenter = transform.map(leftCenter);
QPointF newRightCenter = transform.map(rightCenter);
QPointF newTopCenter = transform.map(topCenter);
QPointF newBottomCenter = transform.map(bottomCenter);
```
在上述代码中,我们首先创建了一个QTransform对象,设置平移和旋转操作。然后,我们定义了矩形框的八个坐标点,调用QTransform类的map函数对它们进行转换,得到了旋转后的新坐标。
阅读全文