Wpf 对UIElements进行分组的最佳轻量级容器是什么?

Wpf 对UIElements进行分组的最佳轻量级容器是什么?,wpf,uielement,Wpf,Uielement,我正在WPF中自我训练。我正在使用画布将两个多边形分组在一起: 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.Stro

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

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

因为我不想用我的
画布
来做任何事情,除了将多边形彼此分组之外,我想知道是否存在比
画布
更轻的东西来做这件事

我在WPF3D中搜索了与WPF2D中的UIElements分组等效的
Model3DGroup
,但没有成功


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

在wpf中,分组的意思实际上被称为布局。您可以选择一个容器来布局您的孩子

是的,帆布是最愚蠢的容器,所以它是最轻的。grid有非常智能的列和行,stackpanel根据Orientation堆叠其子元素,但canvas除了根据x和y值放置uielements之外什么都不做


因此,我认为canvas对于您的示例来说是非常好的,因为您希望在绘制图形之前有一点偏移。

谢谢。同时,我通过使用Canvas.SetTop和Canvas.SetLeft了解到,在内部内容上使用TranslateTransform的速度是使用TranslateTransform的两倍。