2009-09-10 33 views
1

我有一個關於在Silverlight的Canvas上使用ScaleTransform的問題,Canvas可以正確縮放,但高度和寬度值始終保持不變。
例如一個100x100的Canvas縮放,所以它看起來200x200的高度和寬度值仍然是100x100,這些如何更新以反映新的大小。如何使用Width和Height反映ScaleTransform以及如何通過設置Height和Width來ScaleTransform?

另一個相關的問題是如何改變一個元素的高度和寬度,並讓它適當地縮放Canvas或XAML元素,即。將一個100x100的元素設置爲200x200會使其中的所有元素都大一倍 - 這應該是一個解決方案,只有元素的高度和寬度被設置爲改變比例。

這些問題都涉及到同一個問題 - 希望有一個解決方案,即在Silverlight 3.0


高度和寬度需要更新,以便當這個Canvas是在一個ScrollViewer中滾動條正確的更新工程新尺寸 - 如果將高度和寬度手動分配給新的縮放尺寸,則會發生這種情況,但這需要適用於所有尺寸。
交談我需要另一個畫布,當它的高度和寬度改變時,裏面的元素會被適當地縮放,因爲這將是一個可調整大小的圖標,用於同一個或另一個畫布上。


如果這是不可能在Silverlight直接反正是有實現代碼這種效果,如果不是在XAML,因爲這有可能在WPF如果使用的是圖像刷的,但Silverlight不支持這一點,需要一個可縮放的畫布,以及一個在縮放後更新它的高度和寬度的畫布。

回答

2

UIElement不知道應用於它的任何變換。所以它的寬度和高度屬性不能反映變換。


那麼一個選項是不使用在所有的變換,而是一個ViewBox(從Silverlight工具包)使用

視框擴展它的內容始終充滿視框。

+0

我還沒有意識到這一點,是否有可能更新高度和寬度後的ScaleTransform值的代碼中的高度和寬度? – RoguePlanetoid 2009-09-10 11:45:43

+0

如果你這樣做,它會變得更大,因爲新的寬度將被縮放。你知道在你知道寬度和高度後變換的情況下你會發現什麼嗎? – 2009-09-10 12:06:46

+0

我需要高度和寬度,因爲我在ScrollViewer中有一個元素,它通過使用元素的高度和寬度來更新滾動條,所以當縮放時元素較大,但滾動條仍然是「設置」原始高度/寬度,再加上顯示的高度和寬度值也需要更新。 – RoguePlanetoid 2009-09-10 12:41:16

相關問題