2011-05-15 3 views
5

Итак, я понимаю, что я рисковаюсь за пределами предполагаемого использования холста здесь и, вероятно, придется придумать более ручное решение. Однако, не будучи чрезмерно опытным в WPF, я надеялся, что может быть какое-то решение, которое позволит мне продолжать использовать Canvas control и функции, которые он дает вам бесплатно.Масштабирование в холст без изменения размера определенных дочерних элементов управления

Проблема вращается вокруг холста, который используется для увеличения и уменьшения изображения и некоторого количества дочерних элементов управления, которые принадлежат холсту. Эти дочерние элементы управления должны размещаться на разных позициях на изображении, и, таким образом, Canvas прекрасно работает в том, что он обрабатывает все расположение/расположение для меня, когда я увеличиваю или уменьшаю масштаб.

Однако один из недостатков заключается в том, что Canvas масштабирует эти дочерние элементы управления, когда я увеличиваю масштаб изображения, заставляя их стать слишком большими, чтобы их можно было использовать на практике. То, что я ищу, - это решение, которое позволяет мне масштабировать изображение, которое принадлежит холсту, также не увеличивая размер дочерних элементов управления, предпочтительно обрабатывая макет для меня.

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

Если дело доходит до меня, я просто сделаю все масштабирование/панорамирование/компоновку самостоятельно, но я думал, что сначала попрошу, чтобы убедиться, что у меня нет ничего, что позволило бы мне передать Canvas не масштабировать размер определенных элементов управления. Заранее спасибо.

ответ

2

Вы можете связать дочерний RenderTransform с обратным преобразованием Canvas, см. Мой ответ на this similar question on rotation.

+0

Большое спасибо за ответ здесь, похоже, только то, что мне нужно. –

2

Это скорее мысль, чем ответ, но что, если вы установите преобразование элемента, который вы не хотите масштабировать, это было противоположно самому холсту. Так, например, если у холста был масштабный преобразование 2.0, установите для элемента масштабное преобразование 0,5. Возможно, вы могли бы выполнить это, связывая значения преобразования вместе с помощью преобразователя значений.

Возможно, вам захочется убедиться, что элемент имеет начало рендеринга рендеринга 0,5,0,5, чтобы он масштабировался от центра.

+0

Приятная мысль! Это будет хорошо работать, я думаю, я попробую это быстро, но я не могу себе представить, что это не сработает. Еще раз спасибо, вернемся к не-ui коду для меня сейчас :) –

Смежные вопросы