Devo essere in grado di ingrandire e rimpicciolire una tela usando la rotellina del mouse. Ho configurato con successo i gestori di mouse wheel e sto attualmente utilizzando un ScaleTransform per applicare lo zoom; tuttavia, il ridimensionamento non viene eseguito in modo "intuitivo".Silverlight 3 - ScaleTransform o altro metodo per ingrandire una tela?
Sto provando a realizzare lo stesso stile di "zoom" come si può vedere in MultiScaleImage, Google Maps/Earth o Adobe Acrobat Reader - ma NON con un'immagine, con un controllo. La transizione non ha bisogno di essere "liscia" o animata (a meno che non sia un approccio più semplice), ma la funzionalità deve essere la stessa.
Tutti i pensieri o idee sarebbe molto apprezzato e grazie in anticipo!
Edit: sono riuscito a "liscio" lo zoom usando animazione:
<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 il seguente codice:
_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
Tuttavia, il problema si pone ancora che è lo zoom fuori l'angolo in alto a sinistra, a differenza di siti come Google Maps in cui lo zoom è "intorno" al mouse.
Grazie per la fonte :) +1 –
Che cos'è CenterAnimation? – Erix