Tengo un elemento Canvas, contenido dentro de un ScrollViewer, que estoy utilizando ScaleTransform. Sin embargo, quiero ser capaz de mantener la posición de desplazamiento del visor enfocada en la misma parte del lienzo después de que la operación de zoom haya finalizado. Actualmente, cuando hago zoom en el lienzo, la posición de desplazamiento del visor permanece donde estaba y se pierde el lugar que el usuario estaba viendo.WPF zoom de lienzo y mantener la posición de desplazamiento
Todavía estoy aprendiendo WPF, y he estado yendo hacia atrás y adelante un poco en esto, pero no puedo encontrar una buena forma basada en XAML para lograr lo que quiero. Cualquier ayuda en este asunto sería muy apreciada y me ayudaría en mi proceso de aprendizaje.
Aquí es el tipo de código que estoy usando ...
<Grid>
<ScrollViewer Name="TrackScrollViewer" HorizontalScrollBarVisibility="Auto" VerticalScrollBarVisibility="Auto">
<Canvas Width="2560" Height="2560" Name="TrackCanvas">
<Canvas.LayoutTransform>
<ScaleTransform ScaleX="{Binding ElementName=ZoomSlider, Path=Value}"
ScaleY="{Binding ElementName=ZoomSlider, Path=Value}"/>
</Canvas.LayoutTransform>
<!-- Some complex geometry describing a motor racing circuit -->
</Canvas>
</ScrollViewer>
<StackPanel Orientation="Horizontal" Margin="8" VerticalAlignment="Top" HorizontalAlignment="Left">
<Slider Name="ZoomSlider" Width="80" Minimum="0.1" Maximum="10" Value="1"/>
<TextBlock Margin="4,0,0,0" VerticalAlignment="Center" Text="{Binding ElementName=ZoomSlider, Path=Value, StringFormat=F1}"/>
</StackPanel>
</Grid>
El enlace de arriba proporciona muchos detalles, pero la descarga se ha movido a un enlace desde esta página: http://blogs.windowsclient.net/joeyw/archive/2009/06/02/pan-and-zoom- updated.aspx –
Estaba interesado en leer sobre esto pero ambos enlaces están rotos. Sí encontré un artículo sobre CodeProject (http://www.codeproject.com/KB/WPF/DeepZoom.aspx). – Tony