Перемещение изображения по панели - C#
Формулировка задачи:
Я пытаюсь менять место положения метки на панели при захвате его мышью. Всё бы хорошо, но перемещать я его могу почему-то только вниз и вправо. Можете подсказать почему?
private void panel1_MouseMove(object sender, MouseEventArgs e) { base.OnMouseMove(e); if ((e.Button & MouseButtons.Left) == MouseButtons.Left) { for (int i = 0; i < marks.Count; i++) { rect = new Rectangle(marks[i].X, marks[i].Y, marks[i].Image.Width / 2, marks[i].Image.Height / 2); if (rect.Contains(e.Location)) { marks[i].X = e.X; marks[i].Y = e.Y; } panel1.Refresh(); } } }
И сразу спрошу, может кто подскажет.. Как нужно перемещать эту метку при изменении масштаба панели, чтобы она сохранялась на месте относительно фонового изображения? То есть, если я, например, ставлю фоном карту и метку в районе реки, то при изменении масштаба карты эта метка с реки съезжает. Разве что карта попадётся идеально квадратная..
Решение задачи: «Перемещение изображения по панели»
textual
Листинг программы
double w = panel1.Width / 10; double h = panel1.Height / 10; panel1.Width -= Convert.ToInt16(w); panel1.Height -= Convert.ToInt16(h); foreach (Mark m in marks) { m.X -= Convert.ToInt16(w/2); m.Y -= Convert.ToInt16(h/2); }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д