1

これは、この同様の質問への追加です。UIをアニメーション化するときに、コントロールと画像のどちらが高速ですか。

図形のツリーを再帰的に繰り返し、表示されている各図形を画面に描画しています。約2〜3世代では、ユーザーがリアルタイムでズームインまたはパンするとスムーズに処理されますが、約4〜6世代になると、処理が遅くなります。

パフォーマンスを向上させるには、ツリーの更新ごとにビットマップに描画してから、無効化ごとにそのビットマップを描画するか、無効化ごとに再帰を実行する方がよいでしょうか。

私は現在解決策に取り組んでいますが、私が終了する前にあなたの答えはまだありがたいです!

4

1 に答える 1

1

メモリ内のビットマップへの描画は、画面への描画よりも高速になります。更新のたびに画面全体を再描画する場合は、ビットマップを作成してから、そのビットマップを画面にブリットする方がはるかに優れています。画面の一部のみを更新する場合は、ビットマップを作成して全体を画面に描画するよりも、画面への複数のブリットの方が高速であるかどうかを検討する必要があります。

一般に、メモリ内でビットマップを作成してから、作成したビットマップを画面に書き込む方が適切です。これは通常は高速であり、重複する領域がすばやく連続して更新された場合に表示されるちらつきも軽減されます。

追加情報:

ビットマップの大きさによっては、無効化の呼び出しごとにすべてを描画したくない場合があります。1つの解決策は、上記のようにメモリ内のビットマップを更新することですが、更新された領域(境界ボックス)も追跡します。次に、境界ボックスを組み合わせて、ビットマップ全体を画面に描画するよりも高速ないくつかの小さな描画操作を実行できます。これははるかに効率的ですが、コードはかなり複雑になります。通常、「領域の数がNより大きい場合、または複数の領域が総面積のX%を超える場合は、ビットマップ全体を描画するだけです」というコードを目にしました。NとXの数値は、プログラムの起動時に決定されます。

于 2012-10-24T01:33:16.407 に答える