Форум программистов, компьютерный форум, киберфорум
C# .NET
Войти
Регистрация
Восстановить пароль
 
187 / 100 / 19
Регистрация: 15.09.2011
Сообщений: 801
1

Захват PictureBox мышкой. После нажатия правой кнопки PictureBox соскакивает при движении.

25.11.2011, 12:32. Просмотров 2067. Ответов 0
Метки нет (Все метки)


Здравствуйте! Вот вопрос: пишу программу и использую в ней PictureBox.
Есть конкретная задача: хватать PictureBox мышкой и таскать по форме. При нажатии правой кнопки (если держишь ещё левую кнопку нажатой) мыши или любой другой PictureBox при движении за мышкой начинает не успевать и теряется)))
Так вот, когда захватываешь левой кнопкой и таскаешь, то PictureBox хорошо бегает за курсором, а вот после нажатия правой кнопки мышки при перетаскивании курсор "теряет" PictureBox, но состояние захвата остаётся(т.е. при наведении мышки вновь и при удерживании левой кнопки мышки PictureBox двигается вместе с курсором, но всё равно его потом теряет, когда начинаешь немного быстрее двигать мышкой). Я думаю, что обработчик события после нажатия второй кнопки обрабатывает ещё что-то а не просто движение мыши с удержанной левой кнопкой, но как это узнать наверняка - вот вопрос.
Если отпустить кнопку мыши и потом захватить вновь, то PictureBox опять жёстко бегает за курсором.
Вот Код:
C#
1
2
3
4
5
6
7
8
9
10
11
12
private void pictureBox1_MouseMove(object sender, MouseEventArgs e)
        {
            if (MouseButtons.Left == e.Button)
            {
                Point cp = new Point(Convert.ToInt32(pictureBox1.Width / 2), Convert.ToInt32(pictureBox1.Height / 2));
 
                Point BoxPoint = pictureBox1.PointToScreen(new Point(e.X-cp.X,e.Y-cp.Y));
                BoxPoint = PointToClient(BoxPoint);
                pictureBox1.Left = BoxPoint.X;
                pictureBox1.Top = BoxPoint.Y;
            }
        }
Я уже пробовал сериализовать класс, чтобы понять что меняется в нём, но PictureBox не поддерживает сериализацию.

Если кто сталкивался с решением данного вопроса, прошу помочь, но упорно ищу пока сам ответ на него, думаю, что это надолго. Просто не поленитесь и проверьте)))

Добавлено через 44 минуты
А, уже нашёл на вашем форуме: надо просто в mousemove указать атрибут Capture.
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
private void pictureBox1_MouseMove(object sender, MouseEventArgs e)
        {
            if (MouseButtons.None == e.Button)
                return;
            
            Point cp = new Point(Convert.ToInt32(pictureBox1.Width / 2), Convert.ToInt32(pictureBox1.Height / 2));
 
            Point BoxPoint = pictureBox1.PointToScreen(new Point(e.X-cp.X,e.Y-cp.Y));
            BoxPoint = PointToClient(BoxPoint);
            pictureBox1.Left = BoxPoint.X;
            pictureBox1.Top = BoxPoint.Y;
        
            pictureBox1.Capture = true;
        }
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
25.11.2011, 12:32
Ответы с готовыми решениями:

Рисование линии мышкой на PictureBox
Всем привет. Решил побаловаться, попробовать реализовать некое подобие Paint на C#. Начал с...

Перетаскивать мышкой второй PictureBox по первому
Здравствуйте, пишу простенький редактор. Загружаю изображения, сохраняю в битмап, который рисую на...

Как сделать так, чтобы после нажатия кнопки можно было щелкнуть мышкой в PictureBox и там бы нарисовался круг?
В общем, допустим, что есть Button1 - добавить круг, PictureBoх, в котором этот круг рисуется и...

Показывать координаты при зажатой правой кнопки на PictureBox
Если я зажимаю правую клавишу и вожу по пикчебоксу , то на экране показываются и динамически...

0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
25.11.2011, 12:32

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь или здесь.

Как при нажатии правой кнопки мыши перемещать фигуры, нарисованные на PictureBox
Как при нажатии правой кнопки мыши перемещать фигуры, нарисованные на picturebox?

Смена картинки в picturebox winforms по нажатию правой/левой кнопки мыши
как реализовать смену картинки по правому или левому/нажатию кнопки мыши? Помогите плиз

Как не перерисовывать фон pictureBox при движении объекта
Приветствую всех. Имеется сетка (по типу шахматной доски), которая рисуется на событии Paint. На...

Глючит pictureBox при передвижении мышкой
Здравствуйте, помогите пожалуйста решить проблемку. Есть форма в которой в BackgroundImage...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.