我正在尝试使用以下代码从方形位图中切出一个圆圈
Canvas canvas=new Canvas(bitmapimg );
int circleXCoord = bitmapimg .getWidth() / 2;
int circleYCoord = bitmapimg .getHeight() / 2;
int circleRadius = bitmapimg .getWidth() / 2;
Rect rect = new Rect(circleXCoord - circleRadius, circleYCoord - circleRadius, circleXCoord + circleRadius, circleYCoord + circleRadius);
int width = rect.width();
int height = rect.height();
Paint paint = new Paint();
paint.setStyle(Paint.Style.STROKE);
paint.setColor(Color.BLUE);
canvas.drawRect(rect, paint);
canvas.drawBitmap(bitmapimg , rect, rect, paint);
Path p = new Path();
p.addCircle(circleXCoord, circleYCoord, width / 2F, Path.Direction.CW);
canvas.clipPath(p, Region.Op.DIFFERENCE);
canvas.drawColor(0, PorterDuff.Mode.CLEAR);
这个想法是将正方形(矩形)位图附加到画布上,然后剪辑圆形路径。清除矩形和圆形之间的差异(使其透明)。
该代码适用于 Android 4,但在 Android 2.3.3 设备上,差异区域显示为黑色而不是透明。
我在这里遗漏了什么还是姜饼不支持 PorterDuff.Mode.CLEAR?有没有更好的方法从Android中的正方形切出一个圆?