0

私は C# で開発された winforms アプリケーションを持っています。これには多くのスクリーン ペインティングが含まれます。ペイントには、カスタム コントロールやその他の 2D オブジェクトのレンダリングが含まれます。問題は、画面全体をペイントするのに約 4 ~ 5 秒かかることです。必要なすべてのデータがディスクやネットワークから読み取られるのではなく、メモリ自体で利用できるようになるレベルまでコードを最適化しました。

レンダリング時間をさらに短縮するために、次のオプションを使用する予定でした

  1. .NET によって提供される GDI クラスを使用する代わりに、Win32API によって公開される GDI 関数を直接呼び出す

  2. レンダリング効率が良いと聞いたのでDirectXを活用。私のアプリケーションには、3D レンダリングは一切含まれていません。

どのオプションを選択するかを決めるのを手伝ってください。高性能のサードパーティ製コンポーネントやライブラリなど、これ以外のオプションはありますか?

4

1 に答える 1

1

個人的な経験から:

  • GDI+ は GDI よりも 2 倍しか遅くありません。(GDI+ を使用する) .NET から純粋な GDI に切り替えてもあまり役に立ちません。

  • Direct2D は、GDI と同じくらい遅く、少なくとも基本的な形状を描画する場合には遅くなります。したがって、もっと複雑なことをしていない限り、おそらく役に立たないでしょう。

あなたの最善の策は、おそらく図面を削減し、データをダブルバッファリングすることです.

それが機能しない場合は、メモリ内にビットマップを生成し (byte[]または何かを使用して、グラフィック API を完全に回避する)、単純に画面に直接ブリット (コピー) することをお勧めします。難しいですが、ほとんどの場合、最速であることがわかります。

于 2012-02-14T07:03:17.190 に答える