繁体   English   中英

Java AWT矩形交集

[英]Java AWT Rectangle intersection

我有两个矩形:

Rectangle rectZR = new Rectangle(513, 163, 38, 39); //(x,y,width,height)
Rectangle rectCorrect = new Rectangle(76, 206, 44, 44);

我这样做:

Rectangle intersect = rectZR.intersection(rectCorrect);

正如坐标所示,两个矩形实际上并不相交,但Java仍然返回一个交点,并且intersect具有以下维度(x,y,width,height):

513, 206, -393, -4

这是一个错误,还是我做错了什么?

相交方法上的JavaDoc说明:

计算此Rectangle与指定Rectangle的交集。 返回一个新的Rectangle,表示两个矩形的交集。 如果两个矩形不相交,则结果将为空矩形

虽然整个类的JavaDoc指定:

宽度或高度为负的矩形沿着具有负尺寸的轴既没有位置也没有尺寸。 这样的矩形沿着这些轴被视为不存在。 对于包含计算和方法来说, 这样的Rectangle也是空的 ,测试它是否包含或交叉点或矩形将始终返回false。 将这样的Rectangle与点或矩形组合在一起的方法将在生成结果时完全忽略Rectangle。 如果组合了两个Rectangle对象并且每个对象都具有负维度,则结果将至少具有一个负维度。

因此,由两个负维度交叉创建的矩形实际上意味着没有交集。 您可以使用intersects()方法检查:

boolean intersects = rectZR.intersects(rectCorrect);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM