Перемещение изображения по панели - 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);
}