android.graphics.Paint方法setXfermode (Xfermode x...

本文介绍如何使用 PorterDuffXfermode 类设置两张图片相交时的融合模式,并通过示例代码展示 SRC_IN 模式实现特定效果的应用场景。包括在 Canvas 上绘制并应用融合模式,以及在实际应用中的示例,如书籍选中后的聚光灯效果。

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

用法:设置两张图片相交时的模式

例子:

?
1
2
mPaint = new Paint();
         mPaint.setXfermode( new PorterDuffXfermode(PorterDuff.Mode.SCREEN));

常见的Xfermode(SRC为原图,DST为目标图),把代码中的SRC_IN换成下图指定的模式就会出现对应的效果图。

?
1
2
3
4
5
Canvas canvas = new Canvas(Src);
 
paint.setXfermode( new PorterDuffXfermode(Mode.SRC_IN));
 
canvas.drawBitmap(Dst, 0f, 0f, paint);

应用场景: Sheleve选选中某本书之后,出现聚光灯的效果,如下图所示:


实例:头像

<pre name="code" class="java">private void setImageView(ImageView iv) {
		//bitmap 不copy会抛出下面的异常 因不允许对资源图片修改  星形图片
		//android Immutable bitmap passed to Canvas constructor异常
		Bitmap mask = ((BitmapDrawable) this.getResources().getDrawable(
				R.drawable.tt)).getBitmap().copy(Bitmap.Config.ARGB_8888, true);
		// 头像图片 两图片大小一样的
		Bitmap bm = ((BitmapDrawable) this.getResources().getDrawable(
				R.drawable.sample_1)).getBitmap();
		Canvas canvas = new Canvas(mask);  //mask 目标
		Paint paint = new Paint();
		paint.setStyle(Style.FILL);
		paint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.SRC_IN));
		canvas.drawBitmap(bm, 0, 0, paint);
		iv.setImageBitmap(mask);
	}

Canvas canvas = new Canvas(mask);  //mask 目标

 
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值