缩放和移动画布

时间:2013-08-10 16:27:29

标签: c# xaml canvas windows-8 microsoft-metro

对于Canvas实施缩放(可能使用捏合)和移动(可能使用幻灯片)的最佳方法是什么?

我在Canvas上绘制了一些非常简单的东西(例如Line,Ellipses等),现在我想让用户放大,缩小并自由移动视口。

2 个答案:

答案 0 :(得分: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#代码中你会把它。

 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);

希望帮助你