私は現在、パス、楕円などのWPFシェイプをキャンバスに描画するビジュアライゼーションツールを開発しています。私はすでに、Shapesが可視性に応じてその場で破壊され作成される仮想化アプローチを実装しました。しかし、600のような楕円だけが見えても、アプリケーションは苦労しているようです。WPFパフォーマンス:何千ものパス/シェイプをキャンバスに表示
私の選択肢は何ですか?私は透明なビットマップとしてグループ化されたシェイプ(一度に500と言う)をレンダリングし、これらをキャンバスにのみ描画することを考えています。しかし、私はそれは良いアイデアだかどうかわからない...私は、変換が適用された場合、これは、ハックのいくつかの並べ替えを必要と集める何から:
VisualBrush shapeBrush = new VisualBrush(shape);
DrawingVisual drawingVisual = new DrawingVisual();
DrawingContext drawingContext = drawingVisual.RenderOpen();
using (drawingContext)
{
drawingContext.DrawRectangle(shapeBrush, null, new Rect(new Point(0, 0), new Point(actualWidth, actualHeight)));
}
renderTarget.Render(drawingVisual);
何大きなWritableBitmapを使用してはどうですか?それは別のアプローチですか?
私は現在、このアプローチを使用しています:パスデータを格納し、境界が可視になるとすぐにWPF System.Windows.Shapes.Pathを返すVirtualPathクラス。 – kitsune
私はStreamGeometryを指摘してくれてありがとうございました。このクラスはまだわかりませんでした。 – kitsune
@kitsune、あなたは「可視になるとすぐにパスを返す仮想パス」を完成させましたか?私は私のプロジェクトの1つでこれを恩恵を受けることができると思う。 –