안드로이드 동적 알파 마스킹 이미지 적용 예제
동적으로 알파 마스킹 비트맵을 생성하고 적용하는 예
소스코드
배경 이미지 위에 알파 마스킹 비트맵을 동적으로 생성하여 그릴 때 PorterDuff 모드를 DST_OUT으로 설정하면 다음과 같이 이미지의 일부 영역이 투명하게 되어 배경이 보이게 된다.
SurfaceView.onDraw() 의 내용
@Override
protected void onDraw(Canvas canvas) {
canvas.drawColor(Color.CYAN);
Canvas c = new Canvas();
Bitmap mainImage = BitmapFactory.decodeResource(getResources(),R.drawable.mountain);
//Bitmap mask = BitmapFactory.decodeResource(getResources(), R.drawable.alpha_mask);
Bitmap result = Bitmap.createBitmap(mainImage .getWidth(), mainImage .getHeight(), Bitmap.Config.ARGB_8888);
// 동적으로 마스킹 이미지를 생성하고 그리는 예
Bitmap mask = Bitmap.createBitmap(mainImage .getWidth(), mainImage .getHeight(), Bitmap.Config.ARGB_8888);
Canvas canvasForMask = new Canvas(mask);
Paint paint1 = new Paint();
paint1.setAntiAlias(true);
paint1.setARGB(255, 255, 255, 255);
canvasForMask.drawCircle(100, 100, 40, paint1);//흰색으로 그려주는 곳은 투명하게 되어 배경이 보이게 될 영역이다
c.setBitmap(result);
c.drawBitmap(mainImage, 0, 0, null);
Paint paint2 = new Paint();
paint2.setFilterBitmap(false);
paint2.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.DST_OUT) );
c.drawBitmap(mask, 0, 0, paint2);
paint2.setXfermode(null);
canvas.drawBitmap(result, 0, 0, null);
}