Возникли проблемы с wpf и rotatetranformation - PullRequest
0 голосов
/ 14 января 2011

Я пытаюсь повернуть элементы на холсте и сохранить их повернутые (не оригинальные) позиции в файл.Я реализовал пользовательский элемент управления UIElement для отображения пользовательского изображения, однако, когда изображение поворачивается на экране, оно поворачивается правильно (без проблем), однако, когда я получаю положение элемента, используя GetValue (Canvas.LeftProperty) и GetValue (Canvas.TopProperty), координаты X, Y и угол наклона элемента соответствуют положению исходного изображения перед поворотом.

Я учу WPF закончить проект для школы, и поэтому мои знания о технологии нетак много, как хотелось бы, но если кто-нибудь может мне помочь, я был бы очень признателен, спасибо.

это реализация моего кода:

CustomObject m;

List<CustomObject> co = new List<CustomObject>();  
foreach (var child in canvas1.Children){  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;m = child as CustomObject;  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (m != null && m.IsEnabled && m.IsVisible){  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SaveStructure m1 = new SaveStructure();  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<b>m1.Angle = Convert.ToSingle(ToRadians(m.Angle));</b>  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<b>m1.X = Convert.ToInt32(m.GetValue(Canvas.LeftProperty));</b>  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<b>m1.Y = Convert.ToInt32(m.GetValue(Canvas.TopProperty));</b>  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;co.Add(m1);  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}  
}   

Примечание: всея хочу знать, как получить положение повернутого элемента на холсте, потому что я продолжаю получать исходную (не повернутую) позицию.

1 Ответ

0 голосов
/ 14 января 2011

Позиция, которую вы получаете, остается прежней, потому что объект не был перемещен, он был просто повернут, если вы хотите получить границы повернутого объекта, который отличается от определения его положения.Вы можете сделать это, получив координаты угловых точек элементов (Canvas.GetLeft(m), Canvas.GetTop(m), Canvas.GetLeft(m) + m.Width, Canvas.GetTop(m) + m.Height) и вращая их, используя метод RotateTransform Transform(Point p), затем извлекая границы из этих повернутых точек.

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