約1000本の線を描く必要があります。これらの行は 1 秒あたり約 25 回変更されます (つまり、1 秒あたり 25000 行)。そうしている間、許容できるパフォーマンスを得るために何を使用できますか? このソフトウェアは、デフォルトで directX を持たないサーバー上でも実行する必要があるため、私は directX 呼び出しを使用しないことを好みます。
2 つの異なる方法でこれを実行しようとしましたが、CPU が溶けてしまいました。
Setup1 - 標準の .NET 呼び出し:
- ダブルバッファパネル
- メモリ ビットマップへの描画 (Graphics.DrawLine による線の消去と再描画)
- Graphics.DrawImageUnscaled でビットマップをパネルにコピーする
- プロファイラーは、これらの 2 つのグラフィックス呼び出しがボトルネックであると言います
Setup2 - gdi の dllimport 呼び出し:
- ダブルバッファパネル
- gdi の MoveToEx と LineTo を使用してメモリ ビットマップに描画する
- BitBlt を使用してビットマップをパネルにコピーする
- プロファイラーは、これらの管理されていない呼び出しがボトルネックであると言います
Winforms の代わりに WPF を使用すると、パフォーマンスは向上しますか? または、directX またはサードパーティのライブラリを使用して、これを行う唯一の方法はありますか?
乾杯