如何在画布上绘制位图,尊重位图的alpha值?

时间:2013-07-09 15:27:35

标签: android bitmap android-canvas alpha-transparency

背景

我有一个主位图,我需要在其他位图上绘制。

主位图有一些半透明像素(具有Alpha通道变量值的像素),因此在其上绘制的其他位图应与其合并,而不是完全覆盖颜色。

问题

如何设置画布相对于半透明像素在主位图上绘制位图?

注意:alpha不适用于整个位图。这是每个像素。

3 个答案:

答案 0 :(得分:7)

Canvas.setXfermode(Xfermode xfermode)。您可以选择多个Xfermode

答案 1 :(得分:4)

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);
}

答案 2 :(得分:0)

    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,使其变为半透明。