Как получить координаты события клика внутри панели? - PullRequest
0 голосов
/ 16 декабря 2011

Как можно получить координаты щелчка мыши внутри панели?Например, я хочу иметь возможность размещать пиксели там, где я щелкаю мышью.Я могу справиться с чертежной частью, но я не знаю, как заставить мою программу прослушивать это событие щелчка и как получить координаты х / у, чтобы оно могло рисовать в нужном месте.

IЯ никогда не видел подобный фрагмент кода, и я не смог найти нужную информацию с помощью Google, поэтому я не могу показать какой-либо код «как я пытался этого добиться», потому что я просто не знал:Я, вероятно, ищу неправильные ключевые слова, но я уверен, что это можно сделать.

РЕДАКТИРОВАТЬ: Спасибо всем

Ответы [ 3 ]

4 голосов
/ 16 декабря 2011

Событие Click не является правильным выбором.Он может быть сгенерирован как мышью, так и клавиатурой, поэтому он не проходит позицию мыши.Например, кнопку можно нажать, нажав клавишу пробела.Это, конечно, не произойдет для панели.Просто используйте вместо этого событие MouseUp.Проверьте переданное свойство e-> Button.

Кроме того, панель не является хорошим выбором.Он не имеет двойной буферизации, поэтому он может начать мерцать, когда рисунок становится сложным.Он не перерисовывается должным образом при изменении размера.PictureBox не имеет этих проблем.Просто относитесь к нему как к панели, реализуйте событие Paint и не устанавливайте свойство Image.

2 голосов
/ 16 декабря 2011

Здесь - это полная подсказка для вашего вопроса с кодом. Для панели вы можете использовать событие mouseDown. А из аргументов события вы можете получить координаты.

1 голос
/ 16 декабря 2011
private: System::Void panel1_MouseDown(System::Object^  sender, System::Windows::Forms::MouseEventArgs^  e) 
{    
     int x= e->X;
     int y= e->y;
}
...