Man skulle tro at man kunne bruge System.Drawing.Region, men denne klasse har ikke en Contains-metode (underligt), som f.eks. Rectangle har.
Såvidt jeg kan se har du 3 muligheder:
1. Du laver selv en funktion der kan teste om et givet punkt ligger inden i en polygon:
Algoritmerne til dette er ikke SÅ komplicerede. Se f.eks. her:
http://www.visibone.com/inpoly/ -her er et færdigt program i C.
Så kan du bruge MouseDown på billedet, og tjekke cursors koordinater i funktionen.
2. Du laver en workaround med de eksisterende muligheder:
Du kunne lægge en række usynlige kontroller (f.eks. transparente Labels) oven på billedet. Ændre disse kontrollers Region, så hver kontrol havde form og placering som en af polygonerne. Bruge kontrollernes Click_Event.
Du ændrer kontrollens Region sådan:
a. Lav et Array af Points der indeholder alle polygonens punkter
b. Lav et GraphicsPath fra Array.
c. Lav en Region fra GraphicsPath.
d. Sæt kontrollens Region til denne.
3. Du implementerer WPF (Windows Presentation Foundation) i dit projekt:
Dette system har langt større muligheder mht UI. Lidt søgning på MSDN viser bl.a. at der findes en Shape klasse der indeholder en Polygon klasse man kan hitteste på.
Dette er noget mere kompliceret, og jeg har ikke selv erfaring med det.
Se her:
http://en.wikipedia.org/wiki/Windows_Presentation_Foundationog her:
http://www.microsoft.com/danmark/msdn/guide/wpf.mspx