e.X
и e.Y
относятся к графическому блоку (например, если мышь находится в верхнем левом углу графического блока, это 0,0).
Значения imagenMapa.Left
и imagenMapa.Top
относятся к форме (или любому другому элементу управления imagenMapa
)
Если вы попытаетесь смешать значения из этих двух систем без преобразования, вы получите скачки (как вы видите).
Возможно, вам лучше преобразовать положение мыши в ту же систему координат, которая используется для объекта, содержащего графическое поле.
Вы можете использовать imagenMapa.PointToScreen
, чтобы получить координаты мыши в экранных координатах (или Cursor.Position
, чтобы получить позицию непосредственно), и yourForm.PointToClient
вернуть их обратно в форму координат.
Обратите внимание, что в зависимости от ваших потребностей, вы можете выполнить "перемещение изображения внутри элемента управления", переопределив / обработав событие Paint
элемента управления и нарисовав изображение самостоятельно. Если бы вы сделали это, вы могли бы сохранить все в координатах Picturebox, так как они, вероятно, будут использоваться при вызове graphicsObject.DrawImage
.