2013-03-23 5 views
0

저는 WPF에서 직접 스스로 학습하고 있습니다.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보다 가벼운 것이 있는지 궁금합니다.

WPF2D에서 UIElements를 그룹화하기 위해 WPF3D에서 Model3DGroup에 해당하는 항목을 검색했지만 성공하지 못했습니다.

Canvas은 UIElements를 그룹화하는 가장 가벼운 컨테이너입니까?

답변

1

그룹화와 관련하여 실제로는 wpf에서 레이아웃 지정이라고합니다. 당신은 당신의 아이들을 배치하는 콘테이너를 뽑는다.

예 캔버스는 가장 어리석은 컨테이너이므로 가장 가벼운 캔버스입니다. 그리드는 매우 똑똑하고 stackpanel은 ortientation에 따라 자식을 스택하지만, x와 y 값에 따라 place uielements를 제외하고는 아무것도 수행하지 않습니다.

따라서 캔버스는 그림을 그리기 전에 약간의 오프셋이 필요하기 때문에 예를 들어 꽤 괜찮습니다.

+0

감사합니다. 캔버스 셋트 탑 (Canvas.SetTop)과 캔버스 셋트 리프트 (Canvas.SetLeft)를 사용하는 것은 내부 내용에 TranslateTransform을 사용하는 것보다 두 배 빠름을 알게되었습니다. – Larry

관련 문제