繁体   English   中英

图片框生成和重叠问题 WINFORMS C#

[英]Problem with pictureboxes spawning and overlapping WINFORMS C#

我不希望图片框相互产生或重叠。

以下是如何创建一个循环,该循环选择一个不与任何其他现有敌人相交的随机位置:

Rectangle rc1;
Rectangle rc2;
bool intersected;
do
{
    intersected = false;
    tempx = random.Next(1, 701);
    Gegner.Location = new Point(tempx, 12);
    rc1 = new Rectangle(Gegner.Location, Gegner.Size);
    foreach(PictureBox pb in gengerList)
    {
        rc2 = new Rectangle(pb.Location, pb.Size);
        if (rc1.IntersectsWith(rc2))
        {
            intersected = true;
            break;
        }
    }
} while (intersected);
// don't add new PB to list until AFTER 
//you've made sure it doesn't intersect with any others
gengerList.Add(Gegner); 

请注意底部的注释。 确保在确保新 PB 不与其他已经存在的 PB 相交之前,不要将新 PB 添加到列表中。 如果您事先添加它,那么它会与自身相交并卡在循环中。

如果它仍然卡住,那么就无法在您指定的区域中放置该数量的 PB,因为它们的放置位置是随机的。 在这种情况下,重新考虑尺寸和/或使用不同的方法来放置它们。

暂无
暂无

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

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