放大Canvas的所有内容

我有这个Xaml:

           

我使用CanvasManager.cs类在Canvas绘图,它工作正常。 现在我需要放大Canvas :缩放Canvas (墨迹)并缩放它包含的内容( StackPanel +图像)。

doubleTapping包含CanvasScrollViewer我有这个方法:

  private async void DScrollViewer_DoubleTapped(object sender, DoubleTappedRoutedEventArgs e) { Point point = e.GetPosition(DScrollViewer); if (DScrollViewer.ZoomFactor == 1) { await Task.Delay(300); DScrollViewer.ChangeView(point.X, point.Y, 2.0F, false); } else { await Task.Delay(300); DScrollViewer.ChangeView(point.X, point.Y, 1.0F, false); } } 

结果是:只有Canvas (它的Ink)变焦, StackPanel及其图像留在这个地方,相同的比例,完好无损!

我究竟做错了什么?

你的错误是你为每个图像的宽度分配一个常量值( Width="570" ),这样它就不会放大或缩小,除非你以编程方式改变它的宽度。

更改图像宽度的最佳方法是为其绑定一个变量值,您可以创建一个转换器,将canvas的宽度除以两个(canvas.width / 2)并将每个图像的宽度绑定到此转换器。然后,缩放将完美地工作。