如何从位图中剪切(删除)一个部分??? 我希望删除该部分/形状..保留透明代替部分.. 说形状是cercle或square ..
答案 0 :(得分:10)
您应该可以使用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传递的位图需要可修改。)
答案 1 :(得分:0)
使用Bitmap.setPixel(x,y,Color)函数将所需像素设置为透明
例如:
Bitmap bmp = ...;
bmp.setPixel (100,100,Color.TRANSPARENT);
对于x / y偏移100,100处的像素。虽然你会发现在许多像素上执行此操作可能会很慢......
答案 2 :(得分:0)
您是否尝试过绘制一个透明色的圆圈, ARGB = 0,0,0,0?