Получение новой позиции линии после поворота - PullRequest
5 голосов
/ 05 июня 2011

Мне нужно узнать новые координаты линии после поворота, используя метод RotateTransform на линии.
Например, после этой строки:

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

line.X1 и три других свойства don 'т изменить.Я нашел какое-то решение для форм, таких как прямоугольные, но оно не работает для линии.Линия по-другому, как с ней обращаться.

РЕДАКТИРОВАТЬ: Спасибо за вашу помощь HB Второй способ это именно то, что я искал.

РЕШЕНИЕ:

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 Ответ

6 голосов
/ 05 июня 2011

Вы можете преобразовать точек самостоятельно:

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

Если вы хотите постоянное преобразование, вы можете преобразовать начальную и конечную точки и назначить новые значения соответствующим свойствам.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...