C#:将路径添加到画布

C#:将路径添加到画布,c#,wpf,C#,Wpf,我有一张200像素宽,100像素高的画布。然后,我有4个正方形,它们以棋盘格形式排列: -- -- | | | -- -- | | | -- -- 左下方格的像素坐标为300300;因此,这超出了画布的视野。我有两个问题: 1) 将这4个正方形添加到画布的最佳方式是什么?我就是这样做的 Path p = new Path(); p.Fill = Blue; p.Data = Square[0]; canvas.Children.Add(p); 2) 如何将画布的查看范围更改为

我有一张200像素宽,100像素高的画布。然后,我有4个正方形,它们以棋盘格形式排列:

 -- --
|  |  |
 -- --
|  |  |
 -- --
左下方格的像素坐标为300300;因此,这超出了画布的视野。我有两个问题:

1) 将这4个正方形添加到画布的最佳方式是什么?我就是这样做的

Path p = new Path();
p.Fill = Blue;
p.Data = Square[0];

canvas.Children.Add(p);
2) 如何将画布的查看范围更改为“移动”到实际绘制其子对象的位置

我不能让它工作,但我可以得到两种工作结果。首先,我只是画出正方形,然后添加一个变换,将它们缩放得非常小。这会导致图形在画布中可见,但它们没有很好地居中或缩放

第二种情况是,它们彼此叠加,但居中。当我设置路径的拉伸值时会发生这种情况


我基本上希望向画布添加一组几何体对象,并使画布的视图移动到其子对象的边界框上。我如何在C#中通过编程实现这一点。如果您对形状进行硬编码,那么在XAML中就很容易做到这一点,但在我的例子中,我想知道如何为任何给定的形状和大小自动缩放。

您在代码隐藏中添加形状的方法对我来说绝对不错。将
画布
移动到“聚焦”特定区域并不是自动为您完成的操作。但是,您可以添加一个
TranslateTransform
来移动子项:

canvas.RenderTransform = new TranslateTransform () { X = 100, Y=-100 };

你在代码隐藏中添加形状的方法在我看来绝对不错。将
画布
移动到“聚焦”特定区域并不是自动为您完成的操作。但是,您可以添加一个
TranslateTransform
来移动子项:

canvas.RenderTransform = new TranslateTransform () { X = 100, Y=-100 };