![]() |
|
Модераторы: gambit, Kefir, Partizan |
![]()
|
|
| Anyone |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 218 Регистрация: 1.6.2008 Репутация: нет Всего: нет |
Объект поворачивается так:
Если объект повернут на некоторый угол, то при изменении значения this._canvasItem.RenderTransformOrigin, объект начинает "прыгать". Это можно как-то избежать? |
|||
|
||||
| math64 |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2505 Регистрация: 12.4.2007 Репутация: 2 Всего: 72 |
Объект будет поворачиваться вокруг того же центра, вокруг которого уже был повёрнут. Если же он ещё не поворачивался, код работать не будет.
orgX и orgY задаются в долях ширины и высоты, при повороте воруг центра orgX = orgY = 0.5; Добавлено через 8 минут и 27 секунд Если объект был уже повёрнут и его нужно ещё повернуть вокруг другого центра, новый центр поворота нужно вычислять (геометрическая задача) или задать в RenderTransform комбинацию из двух поворотов. |
|||
|
||||
| Anyone |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 218 Регистрация: 1.6.2008 Репутация: нет Всего: нет |
Наверное я не правильно понят.
Проблем с поворотом объекта нету. Мне нужно изменять центр поворота (перемещается мышкой). Когда объект не повернут, все работает замечательно, а когда повернут - при изменении центра объект начинает смещаться в разных направлениях. Центр перемещаю так:
|
|||
|
||||
| math64 |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2505 Регистрация: 12.4.2007 Репутация: 2 Всего: 72 |
Добавлено через 10 минут и 38 секунд Когда объект повернут, его адорнер тоже поворачивается. Координаты в Drag_Delta задаются в повёрнутой системе координат. Это не всегда удобно. Вместо этого можно поворачивать шаблоны объекта и адорнера на один и тот же угол - но тогда биндить напрямую RotateTransform.Angle не получается. ( http://forum.vingrad.ru/forum/topic-274351...oltemplate.html ) Это сообщение отредактировал(а) math64 - 2.10.2009, 09:04 |
|||
|
||||
| Anyone |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 218 Регистрация: 1.6.2008 Репутация: нет Всего: нет |
Я пытался так сделать:
dragPoint = rotate.Transform(dragPoint); но это не помогает, поскольку это всего лишь смещение центра задается с помощью координат этой точки... А пример я не совсем понял. Если я правильно понял, это и нужно - задавать центр относительно повернутого объекта. Может здесь нужно поиграться с TranslateTransform, чтоб вернуть объект на место? |
|||
|
||||
| math64 |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2505 Регистрация: 12.4.2007 Репутация: 2 Всего: 72 |
Возможно, нужно поворачивать в обратную сторону
или делать ещё более сложные преобразования |
|||
|
||||
| Anyone |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 218 Регистрация: 1.6.2008 Репутация: нет Всего: нет |
Проблему решил:
В переменной pointTopLeftCorner сохраняю реальные координаты верхнего левого угла объект учитывая угол поворота, а с помощью функции SetTopLeftCorner возвращаю объект на место. |
|||
|
||||
![]()
|
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | WPF и Silverlight | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |