Перемещение изображений по форме - 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;
            }
        }

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

9   голосов , оценка 3.222 из 5
Похожие ответы