StreamGeometryで描画すると、線が多い場合でもオーバーヘッドが少なくなるそうです。
あたいの変更等が考慮されていない分、Lineを複数設定するより軽くなると思っています。
実際のところは不明です。同じ書き方で複数線も描けるので意外と便利です。
// StreamGeometry生成
StreamGeometry geometry = new StreamGeometry();
using (StreamGeometryContext geometryCnt = geometry.Open())
{
// 始点のポイントを設定
geometryCnt.BeginFigure(PointCollection[0], false, false);
// 2点目から終点までのポイントリストを設定
geometryCnt.PolyLineTo(PointCollection.skip(1).ToList(), true, false);
}
// StreamGeometry確定
geometry.Freeze();
// Pathを生成してデータ設定
Path path = new Path();
path.Stroke = Brushes.Black;
path.StrokeThickness = 1.0;
path.Data = geometry;
■StreamGeometryContextのポイントの設定箇所について
BeginFigure(Point, _buff.GetValue(0)), isFilled, isClosed);について
isFilled・・・pathで設定したFillにより図形の中身を塗りつぶすかどうか
isClosed・・・三点あったら勝手に三角形にしてくれる。今回は折れ線なので閉じたらだめなのでfalse
ctx.PolyLineTo(PointCollection.ToList(), isStroked, isSmoothJoin);について
isStroked・・・線を繋ぐか繋げないかのよう、falseだと線が描画されない
isStroked・・・セグメントと前のセグメント間の結合線に適用したときに、角と見なすかどうか、とりあえずfalse
スポンサーサイト