你如何从位图中剪切(删除)一个部分???我希望删除那个部分/形状.. 用透明代替部分.. 说形状是圆形或方形..
问问题
4850 次
3 回答
11
您应该可以使用 Porter-Duff 滤色器和Canvas
:
public void punchHole(Bitmap bitmap, float cx, float cy, float radius) {
Canvas c = new Canvas(bitmap);
Paint paint = new Paint();
paint.setColorFilter(new PorderDuffColorFilter(0, PorderDuff.Mode.CLEAR));
c.drawCircle(cx, cy, radius, paint);
}
嗯,那是错误的。但是,使用 Porter-Duff 传输模式确实有效:
public void punchHole(Bitmap bitmap, float cx, float cy, float radius) {
Canvas canvas = new Canvas(bitmap);
Paint paint = new Paint();
paint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.CLEAR));
canvas.drawCircle(cx, cy, radius, paint);
}
(当然,作为 arg 传递的位图需要是可修改的。)
于 2012-08-01T21:00:15.047 回答
0
使用 Bitmap.setPixel(x,y,Color) 函数将所需像素设置为透明
例如:
Bitmap bmp = ...;
bmp.setPixel (100,100,Color.TRANSPARENT);
对于 x/y 偏移 100,100 处的像素。尽管您会发现在许多像素上执行此操作可能会很慢...
于 2012-08-01T19:37:19.677 回答
0
您是否尝试使用透明颜色 ARGB = 0,0,0,0 绘制一个圆圈?
于 2012-08-01T21:34:06.380 回答