Necesito poder acercar y alejar un lienzo usando la rueda del mouse. He configurado con éxito los manejadores de rueda del mouse y actualmente estoy usando ScaleTransform para aplicar el zoom; sin embargo, la escala no se hace de una manera "intuitiva".Silverlight 3 - ScaleTransform u otro método para acercar un lienzo?
Estoy tratando de lograr el mismo estilo de "zoom" que se puede ver en MultiScaleImage, Google Maps/Earth o Adobe Acrobat Reader, pero NO con una imagen, con un control. La transición no necesita ser "suave" o animada (a menos que sea un enfoque más fácil), pero la funcionalidad debe ser la misma.
¡Cualquier idea o pensamiento sería muy apreciado y gracias de antemano!
Editar: he conseguido "suave" el zoom utilizando la animación:
<Canvas.Resources>
<Storyboard x:Name="ZoomStoryboard">
<DoubleAnimation x:Name="ZoomAnimationX"
Storyboard.TargetName="Workspace"
Storyboard.TargetProperty="Canvas.RenderTransform.ScaleTransform.ScaleX"
Duration="0:0:0.2"/>
<DoubleAnimation x:Name="ZoomAnimationY"
Storyboard.TargetName="Workspace"
Storyboard.TargetProperty="Canvas.RenderTransform.ScaleTransform.ScaleY"
Duration="0:0:0.2"/>
</Storyboard>
</Canvas.Resources>
con el siguiente código:
_Zoom += (args.Delta/7);
if (_Zoom < 0.15)
_Zoom = 0.15;
ZoomAnimationX.To = _Zoom;
ZoomAnimationY.To = _Zoom;
ZoomStoryboard.Begin();
ZoomScale.Text = _Zoom.ToString("0.00") + "x";
_PreviousMousePosition = _CurrentMousePosition
Sin embargo, el problema sigue siendo que surge es el zoom de la esquina superior izquierda, a diferencia de sitios como Google Maps donde el zoom está "alrededor" del mouse.
Gracias por la fuente :) +1 –
¿Qué es CenterAnimation? – Erix