当我使用以下两种技术计算闭合路径的边界时,我遇到了几个问题。
方法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)
}
方法1返回大于路径的边界,这会让人感到困惑,因为十进制四舍五入,方法2会切断路径的小部分。
我该如何解决这个问题?有没有办法获得精确的界限。
答案 0 :(得分:0)
我不认为有办法,将false传递给path.computeBounds(figureLocationF, false);
并接受不精确的度量,否则为true给出准确的结果。如果Android精确度不够好,只需计算自己的界限即可。这只是方便的方法。在devleoper选项“硬件加速渲染”中打开google开发人员功能,即可看到画布重绘的亮点。