旋转后获取线的新位置

时间:2011-06-05 08:21:32

标签: wpf rotation line coordinates transform

我需要在一条线上使用RotateTransform方法找出旋转后的线的新坐标 例如,在此行之后:

line.RenderTransform = new RotateTransform(25, 0, 0);

line.X1和其他三个属性不会改变。我找到了一些像矩形这样的形状的解决方案,但它不适用于线条。线有不同的方式如何对待它。

编辑:感谢您的帮助 H.B。第二种方式正是我一直在寻找的。

解决方案:

Line line = new Line();
line.X1 = 10;
line.Y1 = 10;
line.X2 = 20;
line.Y2 = 30;

RotateTransform rotation = new RotateTransform();
Point p1 = rotation.Transform(new Point(line.X1, line.Y1));
Point p2 = rotation.Transform(new Point(line.X2, line.Y2));

line.X1 = p1.X;
line.Y1 = p1.Y;
line.X2 = p2.X;
line.Y2 = p2.Y;

此代码旋转直线并将新坐标值设置为此线的附加属性。

1 个答案:

答案 0 :(得分:6)

你可以自己transform点:

var transform = new RotateTransform(25, 0, 0);
var newP1 = transform.Transform(new Point(line.X1,line.Y1));
//...

如果要进行永久转换,可以转换起点和终点,并将新值分配给相应的属性。