//  pt1-------pt2
	//   |         |
	//   |         |
	//   |         |
	//  pt4-------pt3

// 已知矩形中心点QPoint pt, 矩形宽W,高H,求沿中心点旋转_anle后的坐标位置

QPoint _pt1, _pt2, _pt3, _pt4;

qreal angle = _angle / 180.0 * M_PI;
qreal a = qSin(angle) * 0.5;
qreal b = qCos(angle) * 0.5;


_pt1 = QPoint(pt.x() + a * H- b * W, pt.y() - b * H- a * W);
_pt3 = QPoint(2 * pt.x() - _pt1.x(), 2 * pt.y() - _pt1.y());
_pt4 = QPoint(pt.x() - a * H- b * W, pt.y() + b * H- a * W);
_pt2 = QPoint(2 * pt.x() - _pt4.x(), 2 * pt.y() - _pt4.y());

使用QT

QRectF rectF = QRectF((m_windowCenter - QPointF(m_windowSize.width() / 2, m_windowSize.height() / 2)), m_windowSize);

QPolygonF polyf;
polyf  << rectF.topLeft() << rectF.topRight() << rectF.bottomRight() << rectF.bottomLeft() << rectF.topLeft();

QTransform trans;
trans.translate(m_windowCenter.x(), m_windowCenter.y());
trans.rotate(m_windowRotation);
trans.translate(-m_windowCenter.x(), -m_windowCenter.y());
	
polyf = trans.map(polyf);

pt1 = polyf.at(0);
pt2 = polyf.at(1);
pt3 = polyf.at(2);
pt4 = polyf.at(3);

 

Logo

开源鸿蒙跨平台开发社区汇聚开发者与厂商,共建“一次开发,多端部署”的开源生态,致力于降低跨端开发门槛,推动万物智联创新。

更多推荐