Android PorterDuffColorFilter 图形混合滤镜

来源:互联网 发布:二次元软件 编辑:程序博客网 时间:2024/05/16 09:39

渲染模式分为

这里写图片描述

绘制模式

    //支持的模式    private PorterDuff.Mode[] modes = {            PorterDuff.Mode.CLEAR,            PorterDuff.Mode.SRC,            PorterDuff.Mode.DST,            PorterDuff.Mode.SRC_OVER,            PorterDuff.Mode.DST_OVER,            PorterDuff.Mode.SRC_IN,            PorterDuff.Mode.DST_IN,            PorterDuff.Mode.SRC_OUT,            PorterDuff.Mode.DST_OUT,            PorterDuff.Mode.SRC_ATOP,            PorterDuff.Mode.DST_ATOP,            PorterDuff.Mode.XOR,            PorterDuff.Mode.DARKEN,            PorterDuff.Mode.LIGHTEN,            PorterDuff.Mode.MULTIPLY,            PorterDuff.Mode.SCREEN    };    //当前模式    private int mCurIndex = 0;

代码

    @Override    protected void onDraw(Canvas canvas) {        //需要关闭硬件加速(没有关闭则没效果)        setLayerType(View.LAYER_TYPE_SOFTWARE, null);        Paint paint = new Paint(Paint.ANTI_ALIAS_FLAG);        //绘制图        Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.f_girl_dress);        canvas.drawBitmap(bitmap,100,100, paint);        //绘制渲染过后的图        paint.setColorFilter(new PorterDuffColorFilter(Color.BLUE,modes[mCurIndex]));        canvas.drawBitmap(bitmap,500,100, paint);    }    //切换模式    public String change(){        mCurIndex++;        if (mCurIndex >= modes.length){            mCurIndex = 0;        }        invalidate();        return modes[mCurIndex].name();    }

效果图

这里写图片描述

原创粉丝点击