Перемещение изображений по форме - 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; } }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д