我想裁剪六边形,八边形和圆形的形状。我使用了自定义图像视图类并在xml中用于显示图像。它适用于不同的形状。
现在我需要在下一个活动中以用户选择的形状裁剪图像。
我尝试了这个例子:在框架中遮罩(裁剪)图像 但是图像不适合形状,只有图像的一部分被遮罩。
我怎样才能做到这一点?
阅读Romain Guy的这篇关于如何制作圆角图像的博客文章。使用此技术,您可以创建各种形状。
这将如何工作?
如果你有预定义的形状数量,我建议你创建一个类,其中包含一些由路径定义的形状。现在,每当用户请求在 ImageView 上使用不同的形状时,您都可以创建一个位图,并从该类返回一个位图,并将其放在 ImageView 上。
例如,八边形将是这样的:
public static Bitmap drawOctagonShapedBitmap(Bitmap src) {
Bitmap dst = Bitmap.createBitmap(src.getWidth(), src.getHeight(), Bitmap.Config.ARGB_8888);
//Create an output as big as the actual bitmap.
Path octagon = null; //Create an octagon shape, it should be big enough to crop enough of the bitmap.
Canvas canvas = new Canvas(dst);
Paint mPaint = new Paint();
BitmapShader mBitmapShader = new BitmapShader(src, Shader.TileMode.CLAMP,
Shader.TileMode.CLAMP);
mPaint.setAntiAlias(true);
mPaint.setShader(mBitmapShader);
canvas.drawPath(octagon, mPaint);
return dst;
}