2013-01-17 1 views
0

저는 캔버스에 그림을 그려야하는 응용 프로그램을 만들고 있습니다. 지금 나는 이렇게하고있다 :WPF로 그림 그리기

PathFigure figure = new PathFigure() { StartPoint = new Point(0, TurboHeight/turboSizeFactor * turboSchaufelFactor), IsClosed = true}; 
LineSegment seg = new LineSegment() { Point = new Point(turboWidth, TurboHeight/turboSizeFactor * turboSchaufelFactor) }; 
figure.Segments.Add(seg); 
seg = new LineSegment(){Point=new Point(turboWidth*0.85, 0)}; 
figure.Segments.Add(seg); 
seg = new LineSegment() { Point = new Point(turboWidth * 0.15, 0) }; 
figure.Segments.Add(seg); 
PathGeometry geo = new PathGeometry(); 
geo.Figures.Add(figure); 
Path path = new Path() { Data = geo, Stroke = Brushes.Black, StrokeThickness = 1, SnapsToDevicePixels = true, Fill = Brushes.LightGray}; 
CnvMain.Children.Add(path); 

이것을하는 방법인가, 더 간단한 방법이있다. 나는 캔버스에 몇 줄을 만들려는 많은 객체를 의미합니다.

감사합니다.

+1

[StreamGeometry] (http://msdn.microsoft.com/en-us/library/system.windows.media.streamgeometry.aspx)를 살펴볼 수 있습니다. PathGeometry의 경량 대안입니다. – Clemens

답변

1

너무 많이 낭비하지 않는 것처럼 보입니다. 난 당신이 다시 변수의 모든 중간 결과를 저장하지 않습니다 할 것 한가지 ... 예를 들면 :

PathFigure figure = new PathFigure() 
{ 
    StartPoint = new Point(0, TurboHeight/turboSizeFactor * turboSchaufelFactor), 
    IsClosed = true 
}; 


figure.Segments.Add(new LineSegment() { Point = new Point(turboWidth, TurboHeight/turboSizeFactor * turboSchaufelFactor) }); 
figure.Segments.Add(new LineSegment() { Point = new Point(turboWidth * 0.85, 0) }); 
figure.Segments.Add(new LineSegment() { Point = new Point(turboWidth * 0.15, 0) }); 

PathGeometry geo = new PathGeometry(); 
geo.Figures.Add(figure); 

Path path = new Path() { Data = geo, Stroke = Brushes.Black, StrokeThickness = 1, SnapsToDevicePixels = true, Fill = Brushes.LightGray }; 

CnvMain.Children.Add(path); 

물론 당신의 방법에 모든 재료를 넣어 또는 배열에 점을 추가하는 듯했으나위한 수 작은 어리석은 기능 같은 작은 기능 ... 더 많은 포인트가 있다면 말이 될 수 있습니다.