Xfermode Mode 解析

描述

在图层混合中,我们会用到PorterDuffXfermode 这个类,但是这个类中需要传入PorterDuff.Mode,这个东西到地是什么都有哪些效果呢?官方的demo 给出的效果图如下:


image.png

解释和用法


        //禁止硬件加速
        setLayerType(View.LAYER_TYPE_SOFTWARE,null);
        //离屏绘制
        int layerId = canvas.saveLayer(0,0,getWidth(),getHeight(),mPaint,Canvas.ALL_SAVE_FLAG);
        canvas.drawBitmap(createRectBitMap(width,height),0,0,mPaint);
        //设置图层混合模式,效果作用于src 源图像区域
        //PorterDuff.Mode.CLEAR :两个图层都不显示
        //PorterDuff.Mode.SRC :显示上层绘制的图像
        //PorterDuff.Mode.DST :显示下层绘制的图像
        //PorterDuff.Mode.SRC_OVER :上下层都显示,上下层绘制叠盖
        //PorterDuff.Mode.DST_OVER :上下层都显示 下层居上显示
        //PorterDuff.Mode.DST_OVER :上下层都显示 下层居上显示
        //PorterDuff.Mode.SRC_IN :取两层绘制交集,显示上层
        //PorterDuff.Mode.DST_IN :取两层绘制交集,显示下层
        //PorterDuff.Mode.SRC_OUT :取上层绘制非交集部分,交集部分透明
        //PorterDuff.Mode.SRC_ATOP :取上层交集部分,下层非交集部分,交集部分是上层的颜色
        //PorterDuff.Mode.DST_ATOP :取下层交集部分,上层非交集部分。交集部分为下层颜色
        //PorterDuff.Mode.XOR :取两图层非交集部分,交集部分是透明的
        //PorterDuff.Mode.DARKEN :取两图层全部区域,交集部分颜色加深。
        //PorterDuff.Mode.LIGHTEN :取两图层全部区域,交集部分颜色点亮。
        //PorterDuff.Mode.MULTIPLY :取两图层交集部分,交集部分颜色叠加。
        //PorterDuff.Mode.SCREEN :取两图层全部区域,交集部分滤色。
        //PorterDuff.Mode.ADD :取两图层全部区域,交集部分饱和度相加
        //PorterDuff.Mode.OVERLAY :取两图层全部区域,交集部分叠加。
        mPaint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.CLEAR));

        canvas.drawBitmap(createCircleBitMap(width,height),0,0,mPaint);
        mPaint.setXfermode(null);
        canvas.restoreToCount(layerId);
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容