放大Canvas的所有内容
我有这个Xaml:
我使用CanvasManager.cs类在Canvas
绘图,它工作正常。 现在我需要放大Canvas
:缩放Canvas
(墨迹)并缩放它包含的内容( StackPanel
+图像)。
在doubleTapping
包含Canvas
的ScrollViewer
我有这个方法:
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)并将每个图像的宽度绑定到此转换器。然后,缩放将完美地工作。