マウスホイールを使用してキャンバスをズームインおよびズームアウトできるようにする必要があります。マウス ホイール ハンドラーを正常にセットアップし、現在 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
ただし、ズームがマウスの「周り」にある Google マップなどのサイトとは対照的に、左上隅からズームアウトしているという問題は依然として発生します。