まず最初に、私は WPF のパフォーマンスに関する記事やフォーラムを非常に多く、非常に多く、非常に多く見てきました。これは別の記事の再投稿に近いものになると思いますが、ご容赦ください。
まず、WPF で 2D CAD プログラムを作成しています。もともと私の考えは、Shape オブジェクトを使用し、組み込みのヒット テストなどを使用することでした。画面に 5000 以上のライン/アークを表示する必要があるため、これではパフォーマンスが十分ではありませんでした。
私が試したさまざまなことは次のとおりです。
Shape オブジェクトを使用し、それらを子として Canvas に追加する
Canvas の OnRender メソッドをオーバーライドして DrawingContext を使用する
直接 VisualHost を作成し、DrawingVisuals を使用して、DrawingVisual オブジェクトが変更された場合にのみ更新されます。
どの状況でも、私はほぼ同じ運命をたどります。2000 行前後で、動きが遅れ始めます。具体的には、行のグループを選択して移動するように指示できます。マウスの動きに反応して動きます (ほとんどの CAD プログラムと同様)。これらのオブジェクトが追いつくのを待つには、かなりの遅延があります。
私はここで途方に暮れています。見つけることができるすべての記事を読みましたが、まだ解決策が見つかりません。私の次のオプションは、必要なことを達成するために GDI+ に戻ることですが、可能であれば WPF ソリューションを探しています。
ご協力いただきありがとうございます。