0

我在 WPF 中自我训练。我正在使用 aCanvas将两个多边形组合在一起:

var grp = new Canvas();

var polygon = new new Polygon();
polygon.Points.Add(new Point(-15, -20));
polygon.Points.Add(new Point(0, 20));
polygon.Points.Add(new Point(15, -20));
polygon.StrokeThickness = 1;
polygon.Stroke = Brushes.Violet;
polygon.Fill = Brushes.Yellow;

var rotationCenter = centroid(polygon);

var centerPoint = new Ellipse();
Canvas.SetLeft(centerPoint, rotationCenter.X -1 );
Canvas.SetTop(centerPoint, rotationCenter.Y-1);
centerPoint.Fill = Brushes.Green;
centerPoint.Height = 3;
centerPoint.Width = 3;

grp.Children.Add(shipPolygon);
grp.Children.Add(centerPoint);

然后,我使用 grp 移动、旋转和玩我的分组多边形Canvas

因为除了将多边形彼此分组之外,我不想将 myCanvas用于其他任何事情,我想知道它是否存在比 a 更轻的东西Canvas来做到这一点。

我在 WPF3D 中搜索了类似的东西来Model3DGroup对 WPF2D 中的 UIElements 进行分组,但没有成功。

Canvas对 UIElements 进行分组的最轻的容器是什么?

4

1 回答 1

1

您对分组的意思实际上称为 wpf 中的布局。你选择一个容器来布置你的孩子。

是的,帆布是最愚蠢的容器,所以它是最轻的。网格具有非常智能的列和行,stackpanel 根据方向堆叠其子项,但画布除了根据 x 和 y 值放置 uielements 之外什么也不做。

因此,我认为画布非常适合您的示例,因为您希望在绘制图形之前有一些偏移。

于 2013-03-23T18:17:19.287 回答