Alv*_*ong 30
比方说,你有两个RectangleS的是r1和r2,你可以检查他们是否互相此相交:
if(r1.IntersectsWith(r2))
{
// Intersect
}
Run Code Online (Sandbox Code Playgroud)
如果您需要彼此相交的确切区域,则可以执行以下操作:
Rectangle intersectArea = Rectangle.Intersect(r1, r2);
Run Code Online (Sandbox Code Playgroud)
您可以查看文档:Rectangle.IntersectsWith,Rectangle.Intersect
其他重要说明:
我刚检查过,如果两个矩形只是在边缘上相互接触,则Rectangle.Intersect返回一个矩形,其中一个维度为零,但是 Rectangle.IntersectsWith会返回false.所以你需要注意这一点.
例如,Rectangle.Intersect在{X=0,Y=0,Width=10,Height=10}与{X=10,Y=0,Width=10,Height=10}返回{X=10,Y=0,Width=0,Height=10}.
如果你希望true只是相互接触,那么将条件改为:
if(Rectangle.Intersect(r1, r2) != Rectangle.Empty)
{
// Intersect or contact (just touch each other)
}
Run Code Online (Sandbox Code Playgroud)
Céd*_*non 11
如果你不想依赖System.Drawing:
我们注意:
X1,Y1,X2,Y2:所述第一矩形的点的坐标(用X1 < X2和Y1 < Y2)X1',Y1',X2',Y2':所述第二矩形的点的坐标(用X1' < X2'和Y1' < Y2')当且仅当:
(X2' >= X1 && X1' <= X2) && (Y2' >= Y1 && Y1' <= Y2)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
17487 次 |
| 最近记录: |