背景
我有一个主位图,我需要在它上面绘制其他位图。
主位图有一些半透明像素(alpha 通道具有不同值的像素),因此在其上绘制的其他位图应与其合并,而不是完全覆盖颜色。
问题
如何设置画布以相对于半透明像素在主位图上绘制位图?
注意:alpha 不适用于整个 bitmap/s 。它是每像素。
我有一个主位图,我需要在它上面绘制其他位图。
主位图有一些半透明像素(alpha 通道具有不同值的像素),因此在其上绘制的其他位图应与其合并,而不是完全覆盖颜色。
如何设置画布以相对于半透明像素在主位图上绘制位图?
注意:alpha 不适用于整个 bitmap/s 。它是每像素。
Canvas.setXfermode(Xfermode xfermode)
. Xfermode
您可以选择多个s。
public void putOver(Bitmap master, Bitmap alphaBitmap){
Canvas canvas = new Canvas(matter);
Paint paint = new Paint();
paint.setXferMode(new PorterDuffXfermode(PorterDuff.Mode.DST_OVER));
canvas.drawBitmap(left, top, left+alphaBitmap.width, left+alphaBitmap.height, paint);
}
public Bitmap PutoverChange(Bitmap all, Bitmap scaledBorder) {
Paint paint = new Paint();
final int width = change.getWidth();
final int height = change.getHeight();
patt = Bitmap.createScaledBitmap(change, width, height, true);
Bitmap mutableBitmap = patt.copy(Bitmap.Config.ARGB_8888, true);
Canvas canvas = new Canvas(mutableBitmap);
scaledBorder = Bitmap.createScaledBitmap(border, width, height, true);
paint.setAlpha(100);
canvas.drawBitmap(scaledBorder, 0, 0, paint);
return mutableBitmap;
}
这里透明度为 100。您可以将其修改为 50,使其变为半透明。