对于Canvas
实施缩放(可能使用捏合)和移动(可能使用幻灯片)的最佳方法是什么?
我在Canvas上绘制了一些非常简单的东西(例如Line,Ellipses等),现在我想让用户放大,缩小并自由移动视口。
答案 0 :(得分:1)
<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#代码中你会把它。
private void OnSizeChanged(Object sender, SizeChangedEventArgs args) {
Main.Width = scrl.ViewportWidth;
Main.Height = scrl.ViewportHeight;
}
这将使您的画布变焦以启用捏合和平移。
图像只有一个样本,以查看缩放功能是否正常工作。它工作正常。
答案 1 :(得分:0)
最好的方法是为画布创建矩阵并缩放并移动矩阵,如下所示:
Canvas can = new Canvas();
Matrix matrix = new Matrix();
matrix.Translate(50, 0);
matrix.Scale(1.5,1.5);
can.RenderTransform = new MatrixTransform(matrix);
希望帮助你