2010-03-14 16 views
9

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> 

Respuesta

3

Esto no es una forma puramente XAML de hacerlo, pero hay una muy buena pieza de trabajo en el blog de Joeyw titulado Pan and Zoom (DeepZoom style) in WPF con enlaces a la fuente. Se ha inspirado un poco en DeepZoom y le ofrece un paneo/zoom de contenido suave/animado. Y si está utilizando WPF 4, probablemente podría modificarlo un poco para agregar algunas funciones de relajación a las animaciones para darle una sensación aún más agradable.

+0

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 –

+2

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

Cuestiones relacionadas