[英]Silverlight zoom area with canvas and scrollview
我有簡單的畫布與項目,我需要添加滾動視圖作為我的畫布的父級。 但是我在設定之后遇到了問題
canvas.RenderTransform=new ScaleTransform(){...}
Scroolbars沒有出現或工作不正確。 對任何信息都會感到高興。
渲染變換在UI渲染過程中發生得更晚。 它最終對控件渲染執行矩陣變換。 滾動查看器將完全不知道此變換,其滾動條將基於原始Canvas的未變換大小。
silverlight工具包包含一個LayoutTransformer
控件。 此控件將變換應用於其內容,作為布局過程的一部分,並將變換后的大小報告為其所需的大小。
考慮一下: -
<ScrollViewer Width="200" Height="200" HorizontalScrollBarVisibility="Auto" VerticalScrollBarVisibility="Auto">
<toolkit:LayoutTransformer>
<toolkit:LayoutTransformer.LayoutTransform>
<ScaleTransform ScaleX="2" ScaleY="2" />
</toolkit:LayoutTransformer.LayoutTransform>
<Canvas Width="150" Height="150" Background="Aquamarine">
<Rectangle Fill="Blue" Canvas.Top="10" Canvas.Left="10" Width="30" Height="30" />
</Canvas>
</toolkit:LayoutTransformer>
</ScrollViewer>
雖然Canvas
的尺寸(150)小於包含滾動查看器(200),但是它被縮放以使其更大(300)。 LayoutTransformer
將其所需大小報告為300,即畫布的變換后大小。 因此,ScrollViewer顯示滾動條以容納它。 沒有LayoutTransformer
的好處,盡管有任何應用的RenderTransform, ScrollViewer
只會看到Canvas的大小為150。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.