MaskFilter ‘面具’

本文介绍了Android中MaskFilter的使用方法及其子类BlurMaskFilter和EmbossMaskFilter的应用技巧。通过调整参数,可以实现模糊和浮雕效果,适用于UI设计及特效制作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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);

这里写图片描述

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);

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值