Question

background

i have a master bitmap that i need to draw on it other bitmaps.

the master bitmap has some semi-transparent pixels (pixels with variant values for the alpha channel) , so that the other bitmaps that are drawn on it should be merged with it instead of overriding the colors completely.

the question

how can i set the canvas to draw the bitmaps on the master bitmap with respect to the semi-transparent pixels ?

note: the alpha is not for the whole bitmap/s . it's per pixel.

Was it helpful?

Solution

Canvas.setXfermode(Xfermode xfermode). There are a number of Xfermodes you can choose.

OTHER TIPS

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;

}

here the transparency is 100. you can modify it to 50 so it becomes semi transparent.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top