MaskFilter ‘面具’

1:MaskFilter介绍

字面翻译可以叫他’面具’,就是我们可以给所画的对象套上这个‘面具’从而达到某些效果,他是设置在画笔上来使用,就是通过改变目标的alpha通道值来达到目的
下面的BlurMaskFilter(模糊)、EmbossMaskFilter(浮雕)是他的子类
MaskFilter本身没有什么方法,主要是使用下面的子类

2:BlurMaskFilter(模糊效果)

1:BlurMaskFilter 这个‘面具’的效果就是模糊效果(边缘底部有点阴影的效果)
通俗点说就是给画笔套上BlurMaskFilter面具,并绘制在目标对象边缘的内外
2:只有一个构造方法,无其他方法
BlurMaskFilter(float radius, BlurMaskFilter.Blur style)
radius :就是这个‘面具’效果的宽度
BlurMaskFilter.Blur 是这个‘面具’效果出现位置,有4个值
INNER :在目标内显示面具(模糊效果),,显示目标,
NORMAL:在目标内外显示面具(模糊效果),显示目标
OUTER :在目标外显示面具(模糊效果),不显示目标
SOLID:在目标外显示面具(模糊效果),显示目标
这里目标指的是要把面具设置到画笔上,画笔绘制出来的对象
后面的显示目标意思是:面具的不同模式可能会导致绘制出来的目标对象不显示出来,而只显示面具效果

@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
Bitmap bitmap= BitmapFactory.decodeResource(getResources(),R.mipmap.a);
Paint paint=new Paint();
BlurMaskFilter bmf = new BlurMaskFilter(bitmap.getWidth()/2, BlurMaskFilter.Blur.INNER);
paint.setColor(Color.RED);
paint.setMaskFilter(bmf);
canvas.drawBitmap(bitmap,0,0,paint);

MaskFilter ‘面具’_第1张图片

EmbossMaskFilter(浮雕效果)

1:通过改变光的方向,光照的强度,模糊系数等实现不同的效果
2:只有一个构造方法,无其他方法
EmbossMaskFilter(float[] direction, float ambient, float specular, float blurRadius)
direction:取三个值x,y,z表示光照的方向
ambient:光照的亮度0最暗、1最亮
specular:镜面反射系数
blurRadius:模糊宽度

Paint paint = new Paint();
paint.setColor(Color.RED);
paint.setTextSize(90);
float[] direction = new float[]{1, 1, 1};
EmbossMaskFilter emboss = new EmbossMaskFilter(direction, 0.5f, 6f, 0.1f);
paint.setMaskFilter(emboss);
canvas.drawText("测试EmbossMaskFilter",100,100, paint);

MaskFilter ‘面具’_第2张图片
如图2:z轴是手机水平时垂直于手机的方向,他的值加大,看到图2字体变白
这里并不上字体变白了,是我们加大了Z轴的光照方向,故整个字体获取更多光后字体泛白,就像我们照相机他图片曝光多了之后整个照片就变白一个道理
MaskFilter ‘面具’_第3张图片
MaskFilter ‘面具’_第4张图片

你可能感兴趣的:(Android)