15

我试图找出在View上给定点获取像素颜色值的最佳方法。我可以通过三种方式写入视图:

  1. 我用View.setBackgroundDrawable(...)设置了背景图像。

  2. 我使用Canvas.drawText(...)Canvas.drawLine(...)等将文本、画线等写入Bitmap-backed Canvas

  3. 我通过让它们写入传递给视图的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 回答