15

Viewの特定のポイントでピクセルの色の値を取得する最良の方法を見つけようとしています。ビューに書き込む方法は 3 つあります。

  1. View.setBackgroundDrawable(...)で背景画像を設定しました。

  2. Canvas.drawText(...)Canvas.drawLine(...)などを使用して、Bitmap-backed Canvasにテキストを書き、線を描きます。

  3. View のonDraw(Canvas canvas)メソッドに渡された Canvas に書き込むことで、子オブジェクト (スプライト) を描画します。

View を拡張するクラスの onDraw() メソッドを次に示します。

   @Override
   public void onDraw(Canvas canvas) {
      // 1. Redraw the background image.
      super.onDraw(canvas);
      // 2. Redraw any text, lines, etc.
      canvas.drawBitmap(bitmap, 0, 0, null);
      // 3. Redraw the sprites.
      for (Sprite sprite : sprites) {
        sprite.onDraw(canvas);
      }
    }

これらすべてのソースを考慮に入れたピクセルの色値を取得する最良の方法は何でしょうか?

4

1 に答える 1

29

ビューをビットマップにロードして(すべての描画/スプライトなどが完了した後のある時点で)、ビットマップからピクセルの色を取得するのはどうですか?

public static Bitmap loadBitmapFromView(View v) {
    Bitmap b = Bitmap.createBitmap( v.getLayoutParams().width, v.getLayoutParams().height, Bitmap.Config.ARGB_8888);                
    Canvas c = new Canvas(b);
    v.layout(0, 0, v.getLayoutParams().width, v.getLayoutParams().height);
    v.draw(c);
    return b;
}

結果に getPixel(x,y) を使用しますか?

http://developer.android.com/reference/android/graphics/Bitmap.html#getPixel%28int,%20int%29

于 2011-06-08T00:09:32.137 に答える