0
두 개의 마스크를 적용 할 비트 맵이 있습니다. 비트 맵의 오른쪽에 마스크를 적용하면 문제가 없지만 같은 비트 맵의 아래쪽에 마스크를 적용하면 다시 매핑하기 때문에 비트 맵 영역이 다시 나타납니다. 아래 그림을 사용하여이 문제를 설명하려고했습니다. 회피 한 영역이 문제의 원인입니다. 나는 그 지역이 다시 태어난 후에도 투명하게 남아 있기를 바란다. 여기 안드로이드 비트 맵 마스킹
내 마스킹 기능 코드를 냈다입니다.paint = new Paint(Paint.ANTI_ALIAS_FLAG);
paint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.DST_IN));
.......
public void setRightMask(MyBitmap bmp, Type type) {
int maskIndex = -1;
switch(type){
case CONCAVE:
maskIndex = 0;
break;
case CONVEX:
maskIndex = 6;
break;
}
Bitmap result = Bitmap.createBitmap((int)bmp.getWidth(), (int)bmp.getHeight(), Config.ARGB_8888);
Canvas canvas = new Canvas(result);
canvas.drawBitmap(bmp.getBmp(), 0, 0, null);
canvas.drawBitmap(masks[maskIndex].getBmp(), bmp.getWidth() - masks[maskIndex].getBmp().getWidth(), 0, paint);
bmp.setBmp(result);
}
public void setBottomMask(MyBitmap bmp, Type type) {
int maskIndex = -1;
switch(type){
case CONCAVE:
maskIndex = 1;
break;
case CONVEX:
maskIndex = 7;
break;
}
Bitmap result = Bitmap.createBitmap((int)bmp.getWidth(), (int)bmp.getHeight(), Config.ARGB_8888);
Canvas canvas = new Canvas(result);
canvas.drawBitmap(bmp.getBmp(), 0, 0, null);
canvas.drawBitmap(masks[maskIndex].getBmp(), 0, bmp.getHeight() - masks[maskIndex].getBmp().getHeight(), paint);
bmp.setBmp(result);
}