0

为 a 实现缩放(可能使用捏合)和移动(可能使用滑动)的最佳方式是Canvas什么?

我正在画布上绘制一些非常简单的东西(例如线条、椭圆等),现在我想允许用户放大、缩小和自由移动视口。

4

2 回答 2

1

干得好。在 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;
}

这将使您的画布缩放以启用捏合和平移。

该图像只是一个示例,以查看缩放功能是否有效。它工作正常。

于 2014-05-29T03:49:13.113 回答
1

最好的方法是为您的画布创建一个矩阵,并像这样缩放和移动矩阵:

Canvas can = new Canvas();
Matrix matrix = new Matrix();
matrix.Translate(50, 0);
matrix.Scale(1.5,1.5);
can.RenderTransform = new MatrixTransform(matrix);

希望对你有帮助

于 2017-04-18T07:10:13.553 回答