什么是组合UIElements的最佳轻量级容器?

时间:2013-03-23 17:47:54

标签: wpf uielement

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

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移动,旋转和播放我的分组多边形。

因为我不想将我的Canvas用于除了将多边形分组之外的其他任何东西,我想知道它是否存在比Canvas更轻的东西来执行此操作。

我在WPF3D中搜索了相当于Model3DGroup的内容,以便在WPF2D中对UIElements进行分组,但没有成功。

Canvas是最轻的容器来分组UIElements吗?

1 个答案:

答案 0 :(得分:1)

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

是帆布是最愚蠢的容器,所以它是最轻的。 grid具有非常智能的列和行,stackpanel根据ortientation堆叠其子节点,但除了根据x和y值放置uielements之外,canvas不会执行任何操作。

因此我认为画布对于你的例子来说非常好,因为你想在绘制你的数字之前想要一点偏移。