2013-03-23 81 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