Кликабельная Карта Изображения c # - PullRequest
5 голосов
/ 18 июня 2011

Я делаю приложение для инвентаризации C #. Тем не менее, я хочу, чтобы была карта, где пользователь может щелкнуть несколько областей и взаимодействовать с инвентарем в этой определенной области.

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

В любом случае, мой вопрос, это хорошая идея? Должен ли я просто загрузить карту в графический блок, избавиться от зловещих визуальных эффектов и отследить координаты клика?

Ответы [ 2 ]

2 голосов
/ 18 июня 2011

Хотя я не думаю, что это плохая идея, одной из альтернатив будет использование Rectangles и функция onclick, состоящая из серии Rectangle.Contains (Point) чтобы выяснить, содержится ли точка, по которой щелкает мышка, в какой-либо из интерактивных областей.

EG

Rectangle R1 = new Rectangle(/*Passed Variables*/);
Rectangle R2 = new Rectangle(/*Passed Variables*/);
//...
OnClick(object sender, MouseEventArgs e)
 {
 If (R1.Contains(e.Location))
  {
   //Stuff
  }
 else
 {
  If (R2.Contains(e.Location))
   {
    //Stuff
   }
 }
}

Если у вас есть большой список объектов Rectangle, вы всегда можетеиспользуйте массив прямоугольников и цикл for для более эффективного способа проверки того, находится ли выбранное место внутри какого-либо прямоугольника.

0 голосов
/ 18 июня 2011

В CodeProject кто-то создал ImageMap Control для этой цели.Я думаю, что другие доступны.

...