Android はマスキングを実装します

キーメソッド

paint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.SRC_IN));


説明する

キャンバスの元の絵はDstとして理解できます

新しくペイントされた前景マップは、 Sreとして理解できます。

以下に示すモード値

サンプルグラフ


一般的な使用法

Canvas canvas = new Canvas(bitmap1);
paint.setXfermode(new PorterDuffXfermode(Mode.SRC_IN));
canvas.drawBitmap(mask, 0f, 0f, paint);


ビットマップの取得

/**
* 根据原图和变长绘制圆形图片
*
* @param source
* @param min
* @return
*/
private Bitmap createCircleImage(Bitmap source, int min) {
final Paint paint = new Paint();
paint.setAntiAlias(true);
// 注意一定要用ARGB_8888,否则因为背景不透明导致遮罩失败
Bitmap target = Bitmap.createBitmap(min, min, Config.ARGB_8888);
// 产生一个同样大小的画布
Canvas canvas = new Canvas(target);
// 首先绘制圆形
canvas.drawCircle(min / 2, min / 2, min / 2, paint);
// 使用SRC_IN
paint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.SRC_IN));
// 绘制图片
canvas.drawBitmap(source, 0, 0, paint);
return target;
}

おすすめ

転載: blog.csdn.net/h3c4lenovo/article/details/44619913