我需要能够使用鼠标滚轮放大和缩小画布。我已经成功设置了鼠标滚轮处理程序,并且目前正在使用 ScaleTransform 来应用缩放;但是,缩放不是以“直观”的方式完成的。
我正在尝试完成与您在 MultiScaleImage、Google Maps/Earth 或 Adobe Acrobat Reader 中看到的相同样式的“缩放”——但不是使用图像和控件。过渡不需要“平滑”或动画(除非它是一种更简单的方法),但功能需要相同。
任何想法或想法将不胜感激,并在此先感谢!
编辑:我已经设法使用动画“平滑”缩放:
<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>
使用以下代码:
_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
然而,问题仍然存在,它正在缩小左上角,而不是像谷歌地图这样的网站,缩放是“围绕”鼠标。