2013-01-17 51 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); 

你当然可以把整个东西的方法或将点阵列,但对于这样的小功能看起来很傻......如果你有更多的观点,它可能是有道理的。