如果已經選擇了兩幅圖像,且兩個位圖對象均已完成實例化,那么能夠繼續(xù)合成操作。這個過程與本章之前的示例非常類似。首先,創(chuàng)建一個空的可變位圖對象,它的大小和配置與第一個位圖對象(bmp1)相同。隨后,根據它構建一個Canvas對象和一個Paint對象。我們只會在該畫布上繪制第一個位圖對象(bmp1),因此它變成了合成操作的目標。
現在可以設置Paint對象上的過渡模式。通過傳入一個定義操作模式的常量,實例化一個新的PorterDuffXfermode對象。然后,在Canvas對象上繪制第二個位圖對象,并且將ImageView設置為新的位圖對象。以下版本的代碼將使用MULTIPLY模式。
if (onePicked && twoPicked){
Bitmap drawingBitmap = Bitmap.createBitmap(bmp1.
getWidth(),bmp1.getHeight(), bmp1.getConfig());
canvas = new Canvas(drawingBitmap);
paint = new Paint();
canvas.drawBitmap(bmp1, 0, 0, paint);
paint.setXfermode(new PorterDuffXfermode(android.
graphics.PorterDuff.Mode.MULTIPLY));
canvas.drawBitmap(bmp2, 0, 0, paint);
compositeImageView.setImageBitmap(drawingBitmap);
}
}
}