Path.computeBounds在Android上返回不正确的边界(这是平台错误吗?)

时间:2017-06-29 00:24:37

标签: android path

当我使用以下两种技术计算闭合路径的边界时,我遇到了几个问题。

方法1

    public RectF Truncate(Path path) {

      RectF figureLocationF = new RectF();
      path.computeBounds(figureLocationF, true);
      return   figureLocationF;
    }

方法2

  public RectF Truncate(Path path) {

    RectF figureLocationF = new RectF();
    path.computeBounds(figureLocationF, true);
    Rect figureLocation = new Rect((int)Math.floor(figureLocationF.left), (int)Math.floor(figureLocationF.top)
    ,(int)Math.ceil(figureLocationF.right), (int)Math.ceil(figureLocationF.bottom));


    Rect bounds = new Rect();
    Region region = new Region();
    region.setPath(path, new Region(figureLocation));
    region.getBounds(bounds);

    return new RectF(bounds)
  }

下图显示了结果 enter image description here

方法1返回大于路径的边界,这会让人感到困惑,因为十进制四舍五入,方法2会切断路径的小部分。

我该如何解决这个问题?有没有办法获得精确的界限。

1 个答案:

答案 0 :(得分:0)

我不认为有办法,将false传递给path.computeBounds(figureLocationF, false);并接受不精确的度量,否则为true给出准确的结果。如果Android精确度不够好,只需计算自己的界限即可。这只是方便的方法。在devleoper选项“硬件加速渲染”中打开google开发人员功能,即可看到画布重绘的亮点。