0

Android にキャンバスがあり、直径 1 ~ 10px の円をたくさん描きます。

この円を透明な背景にのみ印刷したいのですが、円が描かれる場所に他の色がある場合はキャンセルする必要があり、その場所に既にある色を知りたいです。また、少しだけ重なっている場合もあります。

問題は、私が見つけたすべてのメソッドのパフォーマンスが悪いことです。

画面上に 10000 を超える円を描いていますが、うまくいきますが、重なり合っているため、その問題を処理する必要があります。

誰でも私を助けることができますか?? :-)

4

1 に答える 1

0

あなたの質問はあまり明確ではありません。

「ビューの背景が描画される前」にどの色が存在するかを知りたい場合、解決策はありません。誰かがそれに対する答えを見つけることができれば、私は非常に興味があります。

「描画したい現在の円と重なる円を以前に描いたかどうか」を知りたい場合、最善の解決策は、以前に描いたすべての円のリスト、それらの中心位置と位置をプログラムで維持することです。直径を調べて、新しい円と重なるかどうかを確認します。その計算は非常に簡単で、1 000 円の場合でも十分に高速であるはずです。

また、このような計算を最適化する方法がいくつかあることに注意してください。たとえば、物事が遅すぎる場合は、従来のユークリッド測度の代わりに別の距離測度を使用することを検討できます。たとえば、絶対値を使用した中心間の x と y の差は、それらの差の 2 乗和の平方根の代わりに使用できます。

于 2013-03-24T09:13:37.167 に答える