私は3D画像マスキングに関するアプリケーションを開発しています。このために、さまざまな透明画像があり、それらを配列に配置しています。多くの検索を行い、最終的にPorterDuffXfermodeを使用してマスキングを実現しました。しかし、一度にマスクされた画像を1つしか取得できません.以下のコードを見てください
private void makeMask() {
// TODO Auto-generated method stub
ImageView imageView=new ImageView(this);
Canvas mCanvas;
for(int i=0;i<maskBitmaps.length;i++){
//mask image
Bitmap mask=BitmapFactory.decodeResource(getResources(), maskBitmaps[i]);
Bitmap original=BitmapFactory.decodeResource(getResources(), R.drawable.nature);
Bitmap result = Bitmap.createBitmap((int)width,(int)height, Config.ARGB_8888);
Canvas mCanvas = new Canvas(result);
Paint maskPaint = new Paint();
mCanvas.drawBitmap(original, 0, 0, null);
maskPaint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.DST_IN));
mCanvas.drawBitmap(mask, 0, 0, maskPaint);
maskPaint.setXfermode(null);
imageView.setImageBitmap(result);
setContentView(imageView);
}
下の画像のような私の希望の出力。よろしくお願いします