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 に答える