Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

269
Views
How to let pictureboxes not overlap with each other?

So I made a game for a school project in windows forms. Only problem is, is that my pictures are overlapping with each other. So my question how do I get them all on a different location where they don't touch each other or not overlap?

In this Method I create the zombies and here I just choose for random locations between -100 and 0 on the x-as

public void ZombieMaker(int aantal, Form formInstance, string ZombieDik)
{
    for (int i = 0; i < aantal; i++)
    {
            PictureBox picture = new PictureBox();

            picture.Image = Properties.Resources.ZombieDik;
            picture.Size = new Size(200, 200);
            picture.Location = new Point(random.Next(1500), random.Next(-100,0));
            picture.SizeMode = PictureBoxSizeMode.Zoom;
            picture.Click += zombie_Click;
            picture.BackColor = Color.Transparent;
            formInstance.Controls.Add(picture);
            picture.Tag = zombies[i];
    }
}

pic of zombies overlapping

over 4 years ago · Santiago Trujillo
2 answers
Answer question

0

Keep track of the already placed pictureboxes, and validate if the bound would overlap.

//List of all pictureBoxes
private List<PictureBox> _pictureBoxes = new List<PictureBox>();

public void ZombieMaker(int aantal, Form formInstance, string ZombieDik)
{
    for (int i = 0; i < aantal; i++)
    {
        Rectangle newPosition;

        //loop till you found a new position
        while (true)
        {
            var newPoint = new Point(random.Next(1500), random.Next(-100,0));
            var newSize = new Size(200, 200);

            newPosition = new Rectangle(newPoint, newSize);

            //validate the newPosition
            if (!_pictureBoxes.Any(x => x.Bounds.IntersectsWith(newPosition)))
            {
                //break the loop when there isn't an overlapping rectangle found
                break;
            }
        }

        PictureBox picture = new PictureBox();
        _pictureBoxes.Add(picture);
 
        picture.Image = Properties.Resources.ZombieDik;
        picture.Size = newPosition.Size;
        picture.Location = newPosition.Location;
        ...
      
    }
}

To validate the overlapping I am using the IntersectWith method of the Rectangle class

https://docs.microsoft.com/en-us/dotnet/api/system.drawing.rectangle.intersectswith?view=net-6.0#system-drawing-rectangle-intersectswith(system-drawing-rectangle)

Edit:

Here a do/while loop instead of the while loop.

Rectangle newPosition;

do
{
    var newPoint = new Point(random.Next(1500), random.Next(-100,0));
    var newSize = new Size(200, 200);

    newPosition = new Rectangle(newPoint, newSize);
} while(_pictureBoxes.Any(x => x.Bounds.IntersectsWith(newPosition))
over 4 years ago · Santiago Trujillo Report

0

I fixed your code so the picture boxes do not overlap each other:

public void ZombieMaker(int aantal, Form formInstance, string ZombieDik)
{
   for (int i = 0; i < aantal; i++)
   {
        PictureBox picture = new PictureBox();

        picture.Image = Properties.Resources.ZombieDik;
        picture.Size = new Size(200, 200);
        picture.Location = new Point(picture.Width * i, random.Next(-100,0));
        picture.SizeMode = PictureBoxSizeMode.Zoom;
        picture.Click += zombie_Click;
        picture.BackColor = Color.Transparent;
        formInstance.Controls.Add(picture);
        picture.Tag = zombies[i];
  }
}
over 4 years ago · Santiago Trujillo Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!