e.X
и e.Y
относятся к изображению (например, если мышь находится в верхнем левом углу окна изображения, то есть 0,0).
Значения imagenMapa.Left
и imagenMapa.Top
являются относительно формы (или любого другого элемента управления содержит imagenMapa
)
Если вы пытаетесь смешать значения из этих двух систем без преобразования, вы собираетесь получить прыжки (как вы» re смотри).
Возможно, вам лучше преобразовать положение мыши в ту же систему координат, что и у вещи, содержащей блок изображения.
Вы можете использовать imagenMapa.PointToScreen
, чтобы получить координаты мыши в координатах экрана (или Cursor.Position
, чтобы получить позицию напрямую) и yourForm.PointToClient
, чтобы вернуть их в виде координат.
Обратите внимание, что в зависимости от ваших потребностей вы можете выполнить «перемещение изображения в пределах элемента управления» путем переопределения/управления Paint
event элемента управления и рисования изображения самостоятельно. Если вы это сделаете, вы можете сохранить все в координатах графического ящика, так как это вероятно, что вы будете использовать, когда вы вызываете graphicsObject.DrawImage
.
Даниель это хорошая теория, но вы можете положить его в код, пожалуйста? У меня такой же точный вопрос, но на VB.net. пожалуйста помоги! –