微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

试图阻止随机生成的图片框不相交

如何解决试图阻止随机生成的图片框不相交

我正在使用Windows窗体上的程序,该程序生成随机坐标点以绘制鱼。我需要鱼之间不再相交,但是我编写的代码无法正常工作。生成的坐标应放入矩形,然后对照所有其他点矩形进行检查。鱼保持相交。知道为什么吗? Code I wrote to stop the intersection.

for (int i = 0; i < fishNumber; i++)
{
    // Checks for overlapping
    fishX = x.Next(200,3100);
    fishY = y.Next(100,1620);

    fishPoints.Add(new Point(fishX,fishY));
    for (int j = 0; j < i; j++)
    {
        while (i != 0 && new Rectangle(fishPoints[i],new Size(200,134)).IntersectsWith(new Rectangle(fishPoints[j],134))))
        {
            fishPoints.RemoveAt(i);
            fishX = x.Next(200,3100);
            fishY = y.Next(100,1620);
            fishPoints.Add(new Point(fishX,fishY));
        }
    }
}

解决方法

尝试以下类似的方法。在确定它不与任何其他鱼相交之后,才添加点:

Size fishSize = new Size(200,134);
for (int i = 0; i < fishNumber;i++)
{
    Point pt;
    bool collided;
    do
    {
        collided = false;
        pt = new Point(x.Next(200,3100),y.Next(100,1620));
        Rectangle rcNewFish = new Rectangle(pt,fishSize);
        foreach(Point otherPt in fishPoints)
        {
            if (rcNewFish.IntersectsWith(new Rectangle(otherPt,fishSize)))
            {
                collided = true;
                break;
            }
        }
    } while (collided);
    fishPoints.Add(pt);
}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。