0

我正在构建一个应用程序,我必须在画布上绘制自己的图形。现在我正在这样做:

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);

这是这样做的方法还是有更简单的方法。我的意思是我正在为画布上的几行创建很多对象。

谢谢。

4

1 回答 1

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);

你当然可以把所有的东西放在一个方法中或者把点放在一个数组中,但是对于这样一个看起来很傻的小函数......如果你有更多的点,它可能是有意义的。

于 2013-01-17T06:57:30.290 回答