C# .NET屏幕对象触摸检测
如果屏幕(窗体)上的两个图像在C#中相互接触,我们将如何检测 我有一个小游戏,我必须找出两个物体(物体的图像)是否相互接触C# .NET屏幕对象触摸检测,c#,.net,winforms,C#,.net,Winforms,如果屏幕(窗体)上的两个图像在C#中相互接触,我们将如何检测 我有一个小游戏,我必须找出两个物体(物体的图像)是否相互接触 有没有一种简单的方法来实现这一点?最快的方法是将每个对象视为一个圆,其半径通常接近其周长,且其中心有一个X、Y坐标对。然后计算两个对象中心之间的距离,并将其与半径之和进行比较。如果它们的半径之和大于中心之间的距离,则它们是接触的。最快的方法是将每个对象视为一个圆,其半径通常接近其周长,且其中心有一个X、Y坐标对。然后计算两个对象中心之间的距离,并将其与半径之和进行比较。如果
有没有一种简单的方法来实现这一点?最快的方法是将每个对象视为一个圆,其半径通常接近其周长,且其中心有一个X、Y坐标对。然后计算两个对象中心之间的距离,并将其与半径之和进行比较。如果它们的半径之和大于中心之间的距离,则它们是接触的。最快的方法是将每个对象视为一个圆,其半径通常接近其周长,且其中心有一个X、Y坐标对。然后计算两个对象中心之间的距离,并将其与半径之和进行比较。如果它们的半径之和大于它们中心之间的距离,则它们是接触的。快速脏方法是检查边界矩形:
if (a.left <= b.right && b.left <= a.right &&
a.top <= b.bottom && b.top <= a.bottom)
if(a.left快速脏方法是检查边界矩形:
if (a.left <= b.right && b.left <= a.right &&
a.top <= b.bottom && b.top <= a.bottom)
<代码>如果(左)P>将它们视为矩形,则可以考虑获取每个图像的每个点的点坐标,然后检查每个点是否大于另一个图像的点(点)。
比如:
/// each point represent the points in the images
Point ImageAUpperLeft;
Point ImageAUpperRight;
Point ImageALowerLeft;
Point ImageALowerRight;
Point ImageBUpperLeft;
Point ImageBUpperRight;
Point ImageBLowerLeft;
Point ImageBLowerRight;
Point[] PtsList = new Point[] { ImageAUpperLeft, ImageAUpperRight, ImageALowerLeft, ImageALowerRight, ImageBUpperLeft, ImageBUpperRight, ImageBLowerLeft, ImageBLowerRight };
/// perform checking here, like:
if (ImageAUpperLeft coincides with ImageBUpperLeft) || (... so on so forth
<>我想你知道算法继续下去,但如果还不清楚,你仍然可以把你的问题作为评论发表在这里。很乐意帮助……: < P>把它们当作矩形,你可以考虑得到每个图像的每个点的点坐标。然后检查每一个点,如果一个大于另一个点(点)。从另一个图像
比如:
/// each point represent the points in the images
Point ImageAUpperLeft;
Point ImageAUpperRight;
Point ImageALowerLeft;
Point ImageALowerRight;
Point ImageBUpperLeft;
Point ImageBUpperRight;
Point ImageBLowerLeft;
Point ImageBLowerRight;
Point[] PtsList = new Point[] { ImageAUpperLeft, ImageAUpperRight, ImageALowerLeft, ImageALowerRight, ImageBUpperLeft, ImageBUpperRight, ImageBLowerLeft, ImageBLowerRight };
/// perform checking here, like:
if (ImageAUpperLeft coincides with ImageBUpperLeft) || (... so on so forth
我想你知道继续这个问题的算法,但是如果仍然不清楚,你仍然可以在这里把你的问题作为评论发布。很乐意帮助…:)只需补充一点:通过比较距离的平方与半径总和的平方,您可以加快圆形碰撞检测的速度-因为您不需要知道实际距离(只需要知道距离是大于还是小于某个值),省去昂贵的平方根可以节省相当多的时间。只需补充一点:通过比较距离的平方与半径总和的平方,可以加快圆形碰撞检测的速度-因为您不需要知道实际距离(只需要知道距离是否大于某个值),省去昂贵的平方根可以节省不少时间。酷!你知道我在哪里可以找到你所说的像素检测,只是出于兴趣吗?这里有一个关于CodeProject的快速示例:酷!你知道我在哪里可以找到你所说的像素检测,只是出于兴趣吗?这里有一个关于CodeProject的快速示例: