放大触摸点

时间:2014-11-08 22:09:34

标签: c# wpf canvas matrix zoom

我有一个大约4048x8096的画布,当我尝试放大时,它不会在手势点放大,它总是朝着点(0,0)移动,这是画布的's位置,这是我使用的代码: 当达到缩放限制时,它也会闪烁。

private void GraphSurface_ManipulationDelta(object sender, System.Windows.Input.ManipulationDeltaEventArgs e)
{
    var matrix = ((MatrixTransform)this.RenderTransform).Matrix;

    Point center = new Point(this.ActualWidth / 2, this.ActualHeight / 2);

    center = matrix.Transform(center);

        if (Scale <= ZoomInLimit && Scale >= ZoomOutLimit)
        {
            matrix.ScaleAt(e.DeltaManipulation.Scale.X, e.DeltaManipulation.Scale.Y, center.X, center.Y);
        }

        if (Scale > ZoomInLimit)
        {
            matrix.M11 -= 0.001;
            matrix.M22 -= 0.001;
        }
        else if (Scale < ZoomOutLimit)
        {
            matrix.M11 = ZoomOutLimit + 0.001;
            matrix.M22 = ZoomOutLimit + 0.001;
        }

    ((MatrixTransform)this.RenderTransform).Matrix = matrix;

    e.Handled = true;
}

1 个答案:

答案 0 :(得分:0)

这是一个放大手势点的演示。使用底部示例。代码是JS,而不是Java,但它应该转换好了。用画布对象替换awesome_tiger.svg。也许这将为您提供您自己的代码所需的示例。希望有所帮助。

http://timmywil.github.io/jquery.panzoom/demo/