美文网首页
Xfermode Mode 解析

Xfermode Mode 解析

作者: 占卜L | 来源:发表于2019-05-02 15:07 被阅读0次

描述

在图层混合中,我们会用到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);

相关文章

网友评论

      本文标题:Xfermode Mode 解析

      本文链接:https://www.haomeiwen.com/subject/xxpnnqtx.html