Перемещение изображений по форме - C#
Формулировка задачи:
Привет! Помогите, пожалуйста!
Есть форма, на неё загружаются n-ое кол-во изображений. После того, как таймер отсчитает нужное кол-во времени пользователь может передвигать изображение по экрану. Проблема в том, что пользователь передвигает сразу все изображения. Также надо проследить, чтобы изображение не выходило за границу формы. Как это лучше всего сделать?
private List<PictureBox> pic;
public bool isDragging = false;
public ArrayList namepic; //хранит названия загруженных картинок
public int n; //кол-во картинок
Point p;
private void button1_Click(object sender, EventArgs e)
{
//загружает и обрабатывает изображение
for (int i = 0; i < namepic.Count; i++)
{
pic.Add(new PictureBox());
pic[i].Load(namepic[i].ToString() + ".jpg");
//pic[i].Load(i.ToString() + ".JPG");
pic[i].SetBounds(a, 10, 100, 100);
pic[i].SizeMode = PictureBoxSizeMode.Zoom;
pic[i].Cursor = Cursors.Hand;
Controls.Add(pic[i]);
a += 120;
pic[i].MouseDown += new MouseEventHandler(pic_MouseDown);
pic[i].MouseUp += new MouseEventHandler(pic_MouseUp);
pic[i].MouseMove += new MouseEventHandler(pic_MouseMove);
}
}
void pic_MouseMove(object sender, MouseEventArgs e)
{
for (int i = 0; i < n; i++)
{
if (isDragging)
{
pic[i].Top += e.Y - p.Y;
pic[i].Left += e.X - p.X;
}
}
// throw new NotImplementedException();
}
void pic_MouseUp(object sender, MouseEventArgs e)
{
isDragging = false;
for (int i = 0; i < n; i++)
if (dropRect.Contains(pic[i].Bounds))
MessageBox.Show("You win!");
// throw new NotImplementedException();
}
void pic_MouseDown(object sender, MouseEventArgs e)
{
isDragging = true;
p = e.Location;
//throw new NotImplementedException();
}Решение задачи: «Перемещение изображений по форме»
textual
Листинг программы
void pic_MouseMove(object sender, MouseEventArgs e)
{
PictureBox pi=(PictureBox)sender;
if (isDragging)
{
pi.Left += e.X - p.X;
pi.Top += e.Y - p.Y;
}
}