Avatar billede luke2009 Nybegynder
13. februar 2009 - 10:58 Der er 9 kommentarer

anvende grafik i C#

Jeg har en GUI med et billede på (jpg). På billedet er der områder eller punkter, som jeg gerne ville kunne lave klikbare lige som man kan i html med <area shape="poly" coords="">. Men hvordan gøres dette i C#?
Avatar billede tjacob Juniormester
14. februar 2009 - 11:34 #1
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_Foundation
og her:  http://www.microsoft.com/danmark/msdn/guide/wpf.mspx
Avatar billede luke2009 Nybegynder
14. februar 2009 - 11:53 #2
Tak, men jeg fandt fram til denne tutorial som gør hvad jeg ønsker. Den eneste mangel er at felterne ikke kan fyltes med farve, når musen føres hen over.
Avatar billede luke2009 Nybegynder
14. februar 2009 - 11:54 #3
Tak, men jeg fandt fram til denne tutorial som gør hvad jeg ønsker. Den eneste mangel er at felterne ikke kan fyltes med farve, når musen føres hen over.
Avatar billede tjacob Juniormester
14. februar 2009 - 12:02 #4
Det er helt OK, -kunne du vise løsningen, eller linket?
Avatar billede luke2009 Nybegynder
14. februar 2009 - 12:17 #5
Avatar billede luke2009 Nybegynder
14. februar 2009 - 12:18 #6
Avatar billede luke2009 Nybegynder
14. februar 2009 - 12:18 #7
Avatar billede luke2009 Nybegynder
14. februar 2009 - 12:18 #8
Avatar billede luke2009 Nybegynder
14. februar 2009 - 12:19 #9
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester