Как сделать так, чтобы ширина и высота отражали ScaleTransform и как ScaleTransform, установив высоту и ширину?

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

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

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


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


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


person RoguePlanetoid    schedule 10.09.2009    source источник


Ответы (1)


UIElement не знает о каких-либо преобразованиях, примененных к нему. Таким образом, его свойства ширины и высоты не могут отражать преобразование.


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

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

person Graeme Bradbury    schedule 10.09.2009
comment
Я не знал об этом, можно ли обновить высоту и ширину в коде на значение post-ScaleTransform для высоты и ширины? - person RoguePlanetoid; 10.09.2009
comment
Если вы это сделаете, он станет еще больше, так как новая ширина будет масштабирована. Можете ли вы дать некоторое представление о том, какую пользу вы собираетесь использовать, зная о преобразовании ширины и высоты поста? - person Graeme Bradbury; 10.09.2009
comment
Мне нужны высота и ширина, поскольку у меня есть элемент в ScrollViewer, который обновляет полосу прокрутки, используя высоту и ширину элемента, поэтому при масштабировании элемент больше, но полоса прокрутки все еще настроена на исходную высоту / ширину, плюс там - это отображаемое значение высоты и ширины, которое также необходимо обновить. - person RoguePlanetoid; 10.09.2009
comment
Спасибо за упоминание ViewBox, я получил это от Silverlight.net, но отмечу это как ответ, поскольку он подтверждает, что он выполняет работу по масштабированию своего собственного содержимого, а не добавляет его в качестве моего собственного ответа. - person RoguePlanetoid; 18.09.2009