2013-03-23 74 views
0

我自己在WPF自我训练。我使用的是Canvas有组合在一起的两个多边形:什么是最好的UIElements轻量级容器?

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

你的分组意味着什么,实际上叫做wpf中的布局。你选择一个布局你的孩子的容器。

是帆布是最愚蠢的容器,所以它是最轻的。网格有非常明智的列和行,并且堆栈面板根据不同位置堆叠其子级,但除了根据x和y值放置元素之外,canvas不会执行任何操作。

因此,我认为帆布对于您的示例来说相当不错,因为您希望在绘制数字之前有一点偏移。

+0

谢谢。与此同时,我通过使用Canvas.SetTop和Canvas.SetLeft在内部内容上使用TranslateTransform的速度快了两倍。 – Larry 2013-03-23 19:29:26