Android滤镜--Alpha值滤镜处理之MaskFilter

所谓的滤镜效果就是对图像进行一定的颜色过滤处理,颜色值是32位的int值,ARGB :A---Alpha值,RGB---颜色值
安卓中对Alpha值的滤镜处理就是利用MaskFilter,其中有两个子类继承MaskFilter
  • BlurMaskFilter--用来绘制模糊阴影
/**
     * Create a blur maskfilter.
     *
     * @param radius 阴影的半径
     * @param style  NORMOL -- 整个图像都被模糊掉
     *               SOLID -- 图像边界外产生一层与Paint颜色一致阴影效果,不影响图像的本身
     *               OUTER -- 图像边界外产生一层阴影,并且将图像变成透明效果
     *               INNER -- 在图像内部边沿产生模糊效果
     * @return       The new blur maskfilter
     */
    public BlurMaskFilter(float radius, Blur style) {
        native_instance = nativeConstructor(radius, style.native_int);
    }
@Override
    protected void onDraw(Canvas canvas) {
        RectF rectF = new RectF(50, 50, 350, 350);

        Paint paint = new Paint(Paint.ANTI_ALIAS_FLAG);
        paint.setColor(Color.RED);

        canvas.drawRect(rectF, paint);

        MaskFilter maskFilter = new BlurMaskFilter(50, BlurMaskFilter.Blur.NORMAL);
        paint.setMaskFilter(maskFilter);

        canvas.translate(400, 0);
        canvas.drawRect(rectF, paint);

        maskFilter = new BlurMaskFilter(50, BlurMaskFilter.Blur.SOLID);
        paint.setMaskFilter(maskFilter);

        canvas.translate(-400, 400);
        canvas.drawRect(rectF, paint);

        maskFilter = new BlurMaskFilter(50, BlurMaskFilter.Blur.OUTER);
        paint.setMaskFilter(maskFilter);

        canvas.translate(400, 0);
        canvas.drawRect(rectF, paint);

        maskFilter = new BlurMaskFilter(50, BlurMaskFilter.Blur.INNER);
        paint.setMaskFilter(maskFilter);

        canvas.translate(-400, 400);
        canvas.drawRect(rectF, paint);
    }
下面是普通画矩形,NORMOL ,SOLID ,OUTER ,INNER 分别的效果
maskfilter.jpg
  • EmbossMaskFilter--用来实现浮雕效果
/**
     * Create an emboss maskfilter
     *
     * @deprecated This subclass is not supported and should not be instantiated.
     *
     * @param direction  指定光源的位置,长度为xxx的数组标量[x,y,z]
     * @param ambient    环境光的因子 (0~1),越接近0,环境光越暗
     * @param specular   镜面反射系数 越接近0,镜面反射越强
     * @param blurRadius 模糊半径 值越大,模糊效果越明显
     * @return           the emboss maskfilter
     */
    @Deprecated
    public EmbossMaskFilter(float[] direction, float ambient, float specular, float blurRadius) {
        if (direction.length < 3) {
            throw new ArrayIndexOutOfBoundsException();
        }
        native_instance = nativeConstructor(direction, ambient, specular, blurRadius);
    }
@Override
    protected void onDraw(Canvas canvas) {
        Paint paint = new Paint(Paint.ANTI_ALIAS_FLAG);
        paint.setColor(Color.RED);


        Rect rectf = new Rect(10,10,300,300);
        canvas.drawRect(rectf,paint);

        canvas.translate(400,0);
        
        //第三个参数发现没什么用
        EmbossMaskFilter embossMaskFilter = new EmbossMaskFilter(new float[]{1,1,1},0.2f,1000,50);
        paint.setMaskFilter(embossMaskFilter);
        canvas.drawRect(rectf,paint);
    }
embossMaskFilter.jpg
项目地址:https://gitee.com/aruba/Filter.git
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值