Muszę mieć możliwość powiększania i pomniejszania obszaru roboczego za pomocą kółka myszy. Udało mi się skonfigurować obsługę myszy na kółkach i obecnie używam ScaleTransform, aby zastosować zoom; jednak skalowanie nie odbywa się w sposób "intuicyjny".Silverlight 3 - ScaleTransform lub inna metoda powiększania płótna?
Próbuję osiągnąć ten sam styl "powiększania", jak można zobaczyć w MultiScaleImage, Mapach Google/Earth lub Adobe Acrobat Reader - ale NIE w przypadku obrazu, z kontrolą. Przejście nie musi być "płynne" ani animowane (chyba, że jest to łatwiejsze podejście), ale funkcjonalność musi być taka sama.
Wszelkie przemyślenia lub pomysły będą bardzo cenne i z góry dziękujemy!
Edit: Udało mi się "gładkim" zoom z wykorzystaniem animacji:
<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>
z następującego kodu:
_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
Jednak problem pojawia się nadal, że jest powiększanie z w lewym górnym rogu, w przeciwieństwie do witryn takich jak Mapy Google, w których zoom jest "w pobliżu" myszy.
Dzięki za źródło :) +1 –
Co to jest CenterAnimation? – Erix