Как я могу получить точное местоположение курсора на изображении в Picturebox - PullRequest
0 голосов
/ 30 августа 2009

У меня есть графическое окно, в котором изображение может быть увеличено с различными значениями. Затем я пытаюсь выяснить расположение курсора на картинке. Я пишу следующий код на событие перемещения мыши на картинке:

int x = (2 * e.X - pictureBox1.Width + pictureBox1.Image.Width) / (2 * _scale / 100);
int y = (2 * e.Y - pictureBox1.Height + pictureBox1.Image.Height) / 2 * _scale / 100);

здесь _scale - это увеличенное значение, которое может быть 10,50,100 или 200 и т. Д.

Мой вопрос:

дает правильное значение, если масштабирование превышает 100%. Но если масштаб меньше 100, это дает неверное значение. Как я могу дать правильное значение, если даже увеличенное изображение меньше 100%?

Еще несколько объяснений:

для увеличения я пишу следующий код.

pictureBox1.Image =  new Bitmap(Orignal_image, (int)( Orignal_image .Width * scale / 100), (int)( Orignal_image.Height * scale / 100));

РЕДАКТИРОВАТЬ: Режим размера изображения boxbox является centerImage. и не обязательно, чтобы ширина окна изображения была равна изображению. его ширина может быть меньше, чем у изображения, и тогда изображение отобразится в центре Picturebox. Мне нужно только местоположение изображения. (то есть 0 пикселей задается начальной позицией изображения, а не картинки).

Ответы [ 2 ]

2 голосов
/ 30 августа 2009

Похоже, виновником является целочисленное деление: 10 / 100 = 0

Используйте деление поплавка или переставьте выражение:

int x = (e.X - (pictureBox1.Width - pictureBox1.Image.Width) / 2) * 100 / _scale;
0 голосов
/ 30 августа 2009
int x = e.X * 100 / _scale;
int y = e.Y * 100 / _scale;
...