마우스 휠을 사용하여 캔버스를 확대 및 축소 할 수 있어야합니다. 마우스 휠 핸들러를 성공적으로 설정했으며 현재 ScaleTransform을 사용하여 줌을 적용하고 있습니다. 그러나 스케일링은 "직관적 인"방식으로 수행되지 않습니다.Silverlight 3 - ScaleTransform 또는 Canvas를 확대/축소하는 다른 방법?
저는 MultiScaleImage, Google Maps/Earth 또는 Adobe Acrobat Reader에서 볼 수있는 것과 같은 "확대/축소"스타일을 달성하려고합니다. 그러나 이미지가있는 것은 아닙니다. 전환은 "부드럽거나"움직일 필요가 없습니다 (쉬운 접근 방법이 아닌 한). 그러나 기능은 동일해야합니다.
어떤 생각이나 아이디어라도 감사 드리며 미리 감사드립니다.
편집 :
_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
그러나, 문제는 여전히 밖으로 확대되어 발생 : 다음 코드로
<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>
: 나는 "부드러운"줌 사용하여 애니메이션을 관리했습니다 왼쪽 위 모서리. 줌이 마우스 주변에있는 Google Maps와는 대조적입니다.
감사합니다. 출처 : +1 –
CenterAnimation이란 무엇입니까? – Erix