6

你如何从位图中剪切(删除)一个部分???我希望删除那个部分/形状.. 用透明代替部分.. 说形状是圆形或方形..

在此处输入图像描述

在此处输入图像描述

4

3 回答 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 回答