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

时间:2011-09-14 23:43:02

标签: android bitmap opacity alpha

我无法使用SurfaceView设置位图上绘制的区域路径的Alpha值。

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

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

接下来,在我的onDraw方法中,我使用自己的alpha绘制位图路径,白色为笔画,黑色为填充色,1为alpha值:

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)。这有什么问题?提前谢谢。

1 个答案:

答案 0 :(得分:0)

我在普通的Java中尝试这个,并且没有错误!可能你应该尝试调试index的值。输出索引和检查的值,或者只是尝试

Color.alpha(index)

http://developer.android.com/reference/android/graphics/Color.html#alpha(int