为什么Rect.contains(right,bottom)返回假?

4

我正在调试我的触摸代码,而我遇到了Rect类的这种奇怪行为。

Rect rect = new Rect(0,0,10,10);
rect.contains(0,0)   // true
rect.contains(10,10) // false
rect.contains(9,9)   // true

为什么会出现这种情况??!

为什么右和下边界是排除的,左和上边界是包含的?我觉得这不太合理,并且没有文档注明这一点。

1个回答

5

这是预期的/有文档记录。从contains(int, int)参考文献中:

左侧和顶部被认为是内部,而右侧和底部则不是。 这意味着对于包含在内的x,y:left <= x < right且top <= y < bottom。

虽然我同意这似乎有点不合逻辑,但当您考虑到一个边缘情况时,它就更有道理了:

空矩形永远不包含任何点。

这个行为还可以防止单个x,y点包含在多个不相交的Rect中。


好的,那个解释很有道理! - Peterdk

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接