0
this.source = VisualTreeHelper.GetChild(this, 0) as FrameworkElement;
this.zoomTransform = new ScaleTransform();
this.transformGroup = new TransformGroup();
this.transformGroup.Children.Add(this.zoomTransform);
this.transformGroup.Children.Add(this.translateTransform);
this.source.RenderTransform = this.transformGroup;
다음 캔버스를 특정 지점 (원래 좌표)으로 화면 중심으로 이동하는 방법이
인 캔버스가 있습니다. public void MoveTo(Point p)
{
var parent= VisualTreeHelper.GetParent(this) as FrameworkElement;
Point centerPoint = new Point(parent.ActualWidth/2, parent.ActualHeight/2);
double x = centerPoint.X - p.X;
double y = centerPoint.Y - p.Y;
x *= this.zoomTransform.ScaleX;
y *= this.zoomTransform.ScaleY;
this.translateTransform.BeginAnimation(TranslateTransform.XProperty, CreatePanAnimation(x), HandoffBehavior.Compose);
this.translateTransform.BeginAnimation(TranslateTransform.YProperty, CreatePanAnimation(y), HandoffBehavior.Compose);
}
private DoubleAnimation CreatePanAnimation(double toValue)
{
var da = new DoubleAnimation(toValue, new Duration(TimeSpan.FromMilliseconds(300)));
da.AccelerationRatio = 0.1;
da.DecelerationRatio = 0.9;
da.FillBehavior = FillBehavior.HoldEnd;
da.Freeze();
return da;
}
실제로 팬 애니메이션이 부정확 한 줌 애니메이션이 실제로 활성화 될 때까지 모든 것이 잘 작동합니다. 나는 x, y 및 중심점 계산 방법을 다르게 시도했지만 올바른 결과를 얻을 수는 없습니다. 모든 도움을 주셔서 감사합니다, 간단하게해야 :) # : 345486
나는 또한 확대/축소 및 팬 지점에 약간의 불확실성을
달성하는 방법을 만들고 싶습니다.