为 a 实现缩放(可能使用捏合)和移动(可能使用滑动)的最佳方式是Canvas
什么?
我正在画布上绘制一些非常简单的东西(例如线条、椭圆等),现在我想允许用户放大、缩小和自由移动视口。
为 a 实现缩放(可能使用捏合)和移动(可能使用滑动)的最佳方式是Canvas
什么?
我正在画布上绘制一些非常简单的东西(例如线条、椭圆等),现在我想允许用户放大、缩小和自由移动视口。
干得好。在 XAML 代码中,用滚动查看器包装它。像这样
<ScrollViewer x:Name="scrl" ZoomMode="Enabled" HorizontalScrollMode="Enabled" VerticalScrollMode="Enabled" HorizontalScrollBarVisibility="Visible" VerticalScrollBarVisibility="Visible" SizeChanged="OnSizeChanged" MinZoomFactor="1">
<Canvas Background="AliceBlue" RenderTransformOrigin="0.5,0.5" x:Name="Main">
<Image Source="Assets/Floorplan.gif" Canvas.Left="358" Canvas.Top="84"></Image>
</Canvas>
</ScrollViewer>
然后在我的 c#code 中你将把它放上去。
private void OnSizeChanged(Object sender, SizeChangedEventArgs args) {
Main.Width = scrl.ViewportWidth;
Main.Height = scrl.ViewportHeight;
}
这将使您的画布缩放以启用捏合和平移。
该图像只是一个示例,以查看缩放功能是否有效。它工作正常。
最好的方法是为您的画布创建一个矩阵,并像这样缩放和移动矩阵:
Canvas can = new Canvas();
Matrix matrix = new Matrix();
matrix.Translate(50, 0);
matrix.Scale(1.5,1.5);
can.RenderTransform = new MatrixTransform(matrix);
希望对你有帮助