关于在Android中更改指定位图区域的alpha值的问题



我在使用SurfaceView设置位图上绘制的区域路径的alpha值时遇到了问题。

我正在创建我的位图,并使用黑色擦除(255作为alpha)

bitmap = Bitmap.createBitmap(480, 724, Bitmap.Config.ARGB_8888);
bitmap.eraseColor(0xFF000000);
Canvas canvas = new Canvas(bitmap);

接下来,在我的onDraw方法中,我在位图上画了一条路径,有自己的alpha值,白色作为描边,黑色作为填充色,alpha值为1:

Paint border = new Paint();
border.setStyle(Paint.Style.STROKE);
border.setStrokeWidth(1);
border.setStrokeCap(Paint.Cap.BUTT);
border.setStrokeJoin(Paint.Join.MITER);
border.setColor(Color.WHITE);
Paint inside = new Paint();
inside.setAntiAlias(false);
inside.setStyle(Paint.Style.FILL);
int alpha = 1<<24;
inside.setColor(alpha);
canvas.drawBitmap(bitmap,0,0, null);
canvas.drawPath(path, border);
canvas.drawPath(path, inside);

最后,在我的onTouchEvent方法中,我这样做:

int index = bitmap.getPixel((int)event.getX(), (int)event.getY());
int alpha = index >>> 24;
Log.v("TAG", " Region path alpha :"+ String.valueOf(alpha));

所以,当我点击路径区域内,我期望有1 (0x01)作为alpha值,但我仍然有255 (0xFF)。这有什么不对吗?

我在通常的Java中尝试这个,并且没有错误!也许您应该尝试调试index的值。输出index的值并检查,或者直接尝试

Color.alpha(index)

http://developer.android.com/reference/android/graphics/Color.htmlα(int)

最新更新