android.graphics.MaskFilter

   MaskFilter我们不妨把它叫做面具,就是给所要画的东西套上一个面具,让你的要画的东西达到你想要的效果,它的使用是安装在画笔上使用的,也就是paint,通过改变目标的alpha的值来达到目的,它本身没什么用,要看它的两个子类BlurMaskFilter,EmbossMaskFilter,一个是让目标部分模糊不清,一个是让目标部分有凹凸的水印图案。

BlurMaskFilter

sdk的解释是使用它后会出现一个面具在目标的边缘的指定范围,该面具的边缘是否会被包进目标中,或者是在目标里边,外边,里边都有,这是由BlurMaskFilter.Blur这个枚举所决定的。

BlurMaskFilter.Blur有4个值

INNER:在目标内显示面具,从边缘向目标内到离边缘radius宽的地方显示,radius为初始化BlurMaskFilter的一个值

NORMAL:在目标内外显示面具,从边缘向目标内和目标外到离边缘radius宽的地方,向外显示面具时都会同时显示在目标边缘处获得的颜色。

OUTER:在目标外显示面具,从边缘向目标外到离边缘radius宽的地方,并且该部分会显示出从目标边缘获得的颜色,不显示目标

SOLID:在目标外显示面具,从边缘向目标外到离边缘radius宽的地方,并且该部分会显示出从目标边缘获得的颜色,显示目标

看初始化函数

BlurMaskFilter(float radius, BlurMaskFilter.Blur style),

两个变量,一个是显示时从边缘到离边缘多宽的值,一个是显示模式,简单应用如下

 Bitmap b1=BitmapFactory.decodeResource(this.getContext().getResources(), R.drawable.a07);
 
 BlurMaskFilter bmf=new BlurMaskFilter(30f,BlurMaskFilter.Blur.SOLID);

 Paint paint=new Paint();
 paint.setMaskFilter(bmf);

 canvas.drawBitmap(b1, 30, 30, paint);

EmbossMaskFilter

这是一个使用后会在目标上显示凹凸不平水印的面具。看初始化

public EmbossMaskFilter (float[] direction, float ambient, float specular, float blurRadius)

direction包含3个值,x,y,z,用来指示光源照的方向。

ambient 范围0-1,表示光的强度系数

specular 表示镜子的高亮系数

blurRadius 在使用光之前的模糊不清的面具的宽度。

说实话这几个参数,除了最后一个参数很好明白是什么意思,干什么用的之外,其余3个都不好懂,怎么取值能得到什么样的效果也不好确定,不够直观。

简单看下应用:

 float direction[]={1,1,1};
 EmbossMaskFilter emf=new EmbossMaskFilter(direction,0.5f,8f,3f);

 Paint paint=new Paint(Paint.DITHER_FLAG);

 paint.setMaskFilter(emf);
 paint.setColor(Color.RED);

 canvas.drawRect(10, 10, 100, 30, paint);

看了半天也没怎么看明白,我想这两个类应该是配合paint用来做立体画的吧。

在apidemo里边有个fingerpaint里边简单的举了下例子怎么用这两个类,画出来的东西确实有立体感

 

 

 

 

 

你可能感兴趣的:(MaskFilter)