我想知道如何在相对于另一点旋转角度后计算点的新坐标。
我有一个矩形箭头,想要将它相对于箭头底部中间的一个点旋转角度θ。
这是为了让我能够在两个屏幕控件之间绘制一个多边形。我不能使用并旋转图片。
到目前为止,我所考虑的复杂化问题的是屏幕的原点在左上角。
如果你将点(px, py)
绕点(ox, oy)
旋转角度theta
,你将得到以下结果:
p'x = cos(theta) * (px-ox) - sin(theta) * (py-oy) + ox p'y = sin(theta) * (px-ox) + cos(theta) * (py-oy) + oy
Graphics
对象的Transform
方法:graphics.TranslateTransform(point of origin);
graphics.RotateTransform(rotation angle);
如果您可以使用System.Windows.Media
命名空间,则可以使用内置的转换:
using System.Windows.Media;
var transform = new RotateTransform() {Angle = angleInDegrees, CenterX = center.X, CenterY = center.Y};
var transformedPoint = transform.Transform(point);
这个在WPF中采用布局转换命令,可以将您的图像旋转到所需的角度。
progress_image.LayoutTransform = new RotateTransform(90);