如何将Shape转换为剪裁区域

时间:2011-10-26 22:02:15

标签: android

我想在我的画布上设置一个与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);

0 个答案:

没有答案