Как заставить ширину и высоту отражать ScaleTransform и как ScaleTransform, задавая высоту и ширину?
-
05-07-2019 - |
Вопрос
У меня проблема с использованием 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)
Окно просмотра масштабирует его содержимое, чтобы оно всегда заполняло окно просмотра.