Как заставить ширину и высоту отражать ScaleTransform и как ScaleTransform, задавая высоту и ширину?

StackOverflow https://stackoverflow.com/questions/1404217

Вопрос

У меня проблема с использованием ScaleTransform для Canvas в Silverlight, Canvas корректно масштабируется, однако значения высоты и ширины всегда остаются неизменными.
например Canvas 100x100 масштабируется таким образом, что 200x200 по-прежнему равен 100x100 в отношении значений высоты и ширины, как их можно обновить, чтобы отразить новый размер.

Еще одна связанная с этим проблема заключается в том, как изменить высоту и ширину элемента и правильно настроить элемент Scale для Canvas или XAML, т.е. установка элемента 100x100 на 200x200 делает все в нем в два раза больше - это должно быть решением, когда только высота и ширина элемента установлены для изменения масштаба.

Эти вопросы относятся к одной и той же проблеме - надеюсь, есть решение, которое работает в Silverlight 3.0

<Ч>

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

<Ч>

Если это невозможно в Silverlight напрямую, есть ли в любом случае достижение этого эффекта в коде, если не в XAML, как это возможно в WPF, если используется ImageBrush, однако Silverlight не поддерживает это и нуждается в масштабируемом холсте, и холст, который при масштабировании обновляет свои собственные высоту и ширину.

Это было полезно?

Решение

UIElement не знает ни о каком преобразовании, примененном к нему. Поэтому его свойства width и height не могут отражать преобразование.

<Ч>

Один из вариантов - вообще не использовать преобразование, а использовать ViewBox (из набора инструментов silverlight)

Окно просмотра масштабирует его содержимое, чтобы оно всегда заполняло окно просмотра.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top