我想在我的画布上设置一个与RoundRectShape相对应的剪辑区域,即我绘制的任何内容都将被剪裁为圆角矩形。
我正在查看Canvas.clipRegion()和Region本身,设置剪辑区域似乎相当简单。问题是我看不到任何简单的方法将圆形矩形转换为一个。我想我可以构造一个RoundRectShape,将它包装在ShapeDrawable中并调用ShapeDrawable.getTransparentRegion()来获取不可见部分的区域。然后,反转区域并设置剪辑区域将是一件简单的事情。除了getTransparentRegion()之外,返回null,因此以下代码不起作用。
有什么想法吗?
final float radii[] = { 8, 8, 8, 8, 8, 8, 8, 8 };
final Shape shape = new RoundRectShape(radii, null, null);
shape.resize(getWidth(), getHeight());
ShapeDrawable shapeDrawable = new ShapeDrawable(shape);
final Region clipRegion = shapeDrawable.getTransparentRegion();
clipRegion.op(shapeDrawable.getBounds(), Region.Op.DIFFERENCE);
canvas.clipRegion(clipRegion);