Мне нужно иметь возможность масштабировать и удалять холст с помощью колесика мыши. Я успешно настроил обработчики колесиков мыши, и в настоящее время я использую 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, где зум "вокруг" мыши.