1

onTouchEvent() メソッドを介して centerX と centerY の 2 つの変数を設定するビットマップがあります。これらの x、y 座標から、ビットマップ上に円を描画し、slideBar を介して円のピクセルを別の RGB 値に変更できます。アルゴリズムで円の内側のピクセルをターゲットにしていますが、残念ながら現状では、ビットマップ全体をピクセルごとに検索して、円のピクセルをターゲットにする必要があります。これには、私が削減したい大量のメソッド呼び出しのオーバーヘッドがあります。

私が考えているのは、円の周りに境界ボックスを作成して、アルゴリズムが検索するスペースを少なくして、うまくいけば速度を上げることです。円の x、y 中心座標と半径 50 を使用して、円の周りに長方形を作成するにはどうすればよいですか?

ありがとうマット。

public void findCirclePixels(){ 


        for (int i=0; i < bgr.getWidth(); ++i) {
            for (int y=0; y < bgr.getHeight(); ++y) {

    if( Math.sqrt( Math.pow(i - centreX, 2) + ( Math.pow(y - centreY, 2) ) ) <= radius ){

                    bgr.setPixel(i,y,Color.rgb(Progress+50,Progress,Progress+100));
                }
            }
        }   

        }// end of changePixel()
4

2 に答える 2

0

これはうまくいきました。

 public void findCirclePixels(){    



        for (int i=centreX-50; i < centreX+50; ++i) {
            for (int y=centreY-50; y <centreY+50 ; ++y) {

    if( Math.sqrt( Math.pow(i - centreX, 2) + ( Math.pow(y - centreY, 2) ) ) <= radius ){

                    bgr.setPixel(i,y,Color.rgb(Progress+50,Progress,Progress+100));
                }
            }
        }

        }// end of changePixel()
于 2011-05-16T16:06:49.303 に答える
0

外側のループの制限を circle.x - radius から circle.x + radius に変更し、内側のループの制限を circle.y - radius から circle.y + radius に変更します。x と y の値に応じて、これらの値のいずれかが 0 未満か、画像の幅または高さの制限よりも大きいかどうかを確認する必要がある場合があります。

于 2011-05-16T15:43:19.600 に答える