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