![]() |
|
Модераторы: gambit, Kefir, Partizan |
![]()
|
|
| Anyone |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 218 Регистрация: 1.6.2008 Репутация: нет Всего: нет |
Для того чтобы узнать реальные координаты повернутого на угол объекта, написал функцию GetRealPointХХХ().
Но, как выяснилось позже, для этих же целей можно использовать стандартную TranslatePoint, но возникла проблема.
После изменения RenderTransformOrigin повернутого объекта, его координаты изменяются. При этом моя функция правильно считает новые координаты ( присваиваются в pointTopLeftCornerAfter1), а TranslatePoint упорно возвращает старые координаты, хотя при следующем вызове функции и до трансформации вновь правильно. Пытался вызывать функции InvalidateArrange(), InvalidateMeasure(), InvalidateVisual() для канваса и объекта после изменения RenderTransformOrigin, но ничего не помогло. В чем проблема? |
|||
|
||||
| math64 |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2505 Регистрация: 12.4.2007 Репутация: 2 Всего: 72 |
По всей видимости, нужно вызвать InvalidateArrange() (а вероятно, она сама вызовется при изменении RenderTransformOrigin), но пользоваться TranslatePoint() можно будет только после того, как объект отрисуется на новом месте (после вызова ArrangeOverride()).
|
|||
|
||||
| Anyone |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 218 Регистрация: 1.6.2008 Репутация: нет Всего: нет |
Я с этим согласен, но как мне узнать что ArrangeOverride() уже вызвался, вернее как форсировать это событие, чтоб я мог воспользоваться функцией TranslatePoint()? |
|||
|
||||
| math64 |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2505 Регистрация: 12.4.2007 Репутация: 2 Всего: 72 |
IsArrangeValid означает что Arrange() вызывался после последнего InvalidateArrange(). Самому Arrange() вызывать нельзя.
|
|||
|
||||
| Anyone |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 218 Регистрация: 1.6.2008 Репутация: нет Всего: нет |
Неужели у задачи нету простого решения?
Естессно я могу использовать свою функцию, на которую убил несколько дней, но мне все же интересно написать отимальный код. А IsArrangeValid действительно имеет значение false перед вызовом TranslatePoint(), даже если не вызываю InvalidateArrange(). Это сообщение отредактировал(а) Anyone - 12.10.2009, 14:40 |
|||
|
||||
| Anyone |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 218 Регистрация: 1.6.2008 Репутация: нет Всего: нет |
Проблему решил: решение
|
|||
|
||||
![]()
|
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | WPF и Silverlight | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |