Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Разработка Windows Forms > перетаскивание картинки в PictureBox


Автор: HelgaZaharova 24.4.2008, 19:55
Нажимаю кнопку на мыши и пытаюсь перетащить картинку

Код:
private void pictureBox1_MouseDown(object sender, System.Windows.Forms.MouseEventArgs e)
        {      p.X=pictureBox1.Location.X;//запомнили расположение картинки            p.Y=pictureBox1.Location.Y;
            ps.X=e.X;//запомнили где ткнули            ps.Y=e.Y;}

        
private void pictureBox1_MouseMove(object sender, System.Windows.Forms.MouseEventArgs e)
        {
                   if(!p.IsEmpty){//перемещаем картинку
       pictureBox1.Location=new Point(p.X+(e.X-ps.X),p.Y+(e.Y-ps.Y));}
            
        }

private void pictureBox1_MouseUp(object sender, System.Windows.Forms.MouseEventArgs e)
        {
            p.X=0;
            p.Y=0;
        }
Картинка не перетаскивается как надо.
В чем может быть дело? smile 

Автор: amarenkov 25.4.2008, 10:35
По-идее, лучше это делать DragAndDrop...

Автор: vponomarov 25.4.2008, 15:54
HelgaZaharova, а че неправильно-то?
такой вот код вполне ожидаемо перемещает пикчерБокс
Код

        private Point ps = new Point(0, 0);
        bool mouseLeftDown = false;
        private void pictureBox1_MouseDown(object sender, System.Windows.Forms.MouseEventArgs e)
        {
            ps.X = e.X;//запомнили где ткнули            
            ps.Y = e.Y;
            if (e.Button == MouseButtons.Left)
                mouseLeftDown = true;
        }

        private void pictureBox1_MouseMove(object sender, System.Windows.Forms.MouseEventArgs e)
        {
            if (mouseLeftDown)
                pictureBox1.Location = new Point(pictureBox1.Location.X + (e.X - ps.X), pictureBox1.Location.Y + (e.Y - ps.Y));
        }

        private void pictureBox1_MouseUp(object sender, MouseEventArgs e)
        {
            if (e.Button == MouseButtons.Left)
                mouseLeftDown = false;
        }

Автор: HelgaZaharova 26.4.2008, 15:48
vponomarov, Ошибок-то нет, но вот картинка не перемещается... Может дело в обрботчике...

Автор: Dennnis 26.4.2008, 16:44
http://forum.vingrad.ru/forum/topic-202928/anchor-entry1457118/0.html ответ на точно такой же вопрос

Автор: vponomarov 26.4.2008, 22:18
Цитата(HelgaZaharova @  26.4.2008,  15:48 Найти цитируемый пост)
vponomarov, Ошибок-то нет, но вот картинка не перемещается... Может дело в обрботчике... 

а ты и не пытался переместить картинку. двигается пикчурБокс а не картинка. причем правильно двигается smile 

Автор: amarenkov 28.4.2008, 08:26
Цитата(vponomarov @  26.4.2008,  22:18 Найти цитируемый пост)
... причем правильно двигается.


А вот как раз и неправильно. У меня она мерцает и двигается с какими-то дикими спецэффектами :(.

Автор: vponomarov 28.4.2008, 20:24
Цитата(amarenkov @  28.4.2008,  08:26 Найти цитируемый пост)
А вот как раз и неправильно. У меня она мерцает и двигается с какими-то дикими спецэффектами :(.

ну так это уже другой вопрос.
нужно ж было написать, что именно неправильно работает, потому что экстрасенсов тут не очень много smile 

Автор: HelgaZaharova 7.5.2008, 18:01
А если все-таки перетаскивать картинку в PictureBox?

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)