2011-06-17 27 views
5

Tworzę aplikację inwentaryzacyjną C#. Jednak chcę, aby była mapa, na której użytkownik może klikać kilka obszarów i wchodzić w interakcje z inwentarzem w tym obszarze.Klikalna mapa obrazu C#

Obecnie przeglądałem mapę i przekształcałem ją w tło formularza. Planuję umieszczać pictureboxes na różnych obszarach i koduję ręcznie zdarzenia myszy, kliknięcia i myszy, aby nadać wygląd przycisku.

W każdym razie, moje pytanie brzmi, czy to dobry pomysł? Czy powinienem załadować mapę do pudełka z obrazkami, pozbyć się efektownych efektów wizualnych i śledzić współrzędne kliknięcia?

Odpowiedz

2

Chociaż nie sądzę, że jest to zły pomysł, jedną alternatywą byłoby użycie Rectangles i funkcja onclick składająca się z serii Rectangle.Contains(Point), aby sprawdzić, czy punkt kliknięty przez mysz znajduje się w którymkolwiek z obszary klikalne.

E.G.

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 
    } 
} 
} 

Jeśli masz większy listę obiektów Rectangle, choć zawsze można użyć tablicę prostokąty i pętli for bardziej efektywny sposób sprawdzenia, czy kliknął lokalizacja jest wewnątrz każdego prostokąta.

+0

Użyłbym tablicy, gdyby było ich więcej niż 1. – mpen

0

W CodeProject ktoś stworzył w tym celu ImageMap Control. Wyobrażam sobie, że inni są dostępni.

+0

dzięki, sprawdzę to – barbara