5

C# で GDI+ を使用して多数の小さな四角形 (約 100 万個) を描画するアプリケーションがありますが、パフォーマンスはあまり良くありません。Rectangleそれらを渡すために多くのオブジェクトを構築するにGraphis.FillRectangleは時間がかかることを理解しています。また、が不変になるように設計されているRectangleため、 がフレームごとに変化する場合、これを回避できないことも理解しています。したがって、私の質問は次のとおりです。すべての s が表示されていると想定する必要があるRectangle場合を除いて、この描画呼び出しのパフォーマンスを向上させる可能性はありますか?Rectangle

前もって感謝します、クリストフ

4

1 に答える 1

9

代わりに、呼び出しの配列バリアントを使用することをお勧めします。

FillRectangles(Brush brush, Rectangle[] rects);

異なるブラシなどが必要なためにそれがうまくいかない場合は、状態 (ブラシ) ごとにプリミティブをグループ化し、それぞれの配列を一度に描画する必要があります。簡単なテストでは、少なくとも 3 倍のパフォーマンスが示されています。つまり、個別に描画された 300K の Rectangle は、一度に描画された 1M Rectangle と同じくらい途切れ途切れに感じられます。

于 2012-04-20T12:25:39.653 に答える