Este es el código
Código:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace Fotos
{
public partial class Form1 : Form
{
//defino los campos
int contador;
int ancho;
int alto;
int posicionInicialAncho;
int posicionInicialAlto;
int posicionActualAlto;
int posicionActualAncho;
string[] nombres;
public Form1()
{
//inicializo los campos dandoles valores iniciales
InitializeComponent();
contador = 0;
ancho = 260;
alto = 210;
posicionInicialAncho = 10;
posicionInicialAlto = 10;
posicionActualAlto = posicionInicialAlto;
posicionActualAncho = posicionInicialAncho;
}
private void btnselecciona_Click(object sender, EventArgs e)
{
// Set the file dialog to filter for graphics files.
this.openFileDialog1.Filter =
"Images (*.BMP;*.JPG;*.GIF)|*.BMP;*.JPG;*.GIF|" +
"All files (*.*)|*.*";
//abre el cuadro de dialogo para elejir la o las fotos
if (openFileDialog1.ShowDialog() == DialogResult.OK)
{
//guardo el ancho del panel que está acoplado a la ventana
int panelTamano = panel1.Size.Width;
//recorro el array de fotos elejidas
foreach (string file in openFileDialog1.FileNames)
{
//si es la primer interación
if (contador == 0)
{
//inicializa el array para guardar los nombres de los objetos pictureBox() creados dinámicamente
nombres = new string[openFileDialog1.FileNames.Length];
}
//en cada iteración se crea un objeto pictureBox()
PictureBox PBox = new PictureBox();
//modifico sos propiedades
PBox.Size = new Size(ancho, alto);
PBox.SizeMode = PictureBoxSizeMode.Zoom;
PBox.Name = "imgBox" + Convert.ToString(contador);
//le doy a este array el nombre de todos los obetos creados co la esperanza de poder utilizarlos más adelante
nombres[contador] = Convert.ToString(contador);
//si el ancho de la ventana supera al de las fotos lo baja a la siguiente linea
if ((posicionActualAncho + ancho + posicionInicialAncho) > panelTamano)
{
posicionActualAncho = posicionInicialAncho;
posicionActualAlto = (posicionActualAlto + posicionInicialAlto + alto);
}
//le asina poosición al control
PBox.Location = new Point(posicionActualAncho, posicionActualAlto);
//añade el control
panel1.Controls.Add(PBox);
PBox.Load(file);
posicionActualAncho = posicionActualAncho + ancho + posicionInicialAncho;
}
}
}
private void Form1_SizeChanged(object sender, EventArgs e)
{
int ventanaAlto = panel1.Size.Height;
int ventanaAncho = panel1.Size.Width;
//MessageBox.Show(Convert.ToString( nombres.Length ));
foreach(string nom in nombres)
{
if ((posicionActualAncho + ancho + posicionInicialAncho) > ventanaAncho)
{
posicionActualAncho = posicionInicialAncho;
posicionActualAlto = (posicionActualAlto + posicionInicialAlto + alto);
}
}
}
}
}


