Tags:
c++
Jeg har lavet en knap i photoshop, men jeg har ingen ide til hvordan jeg skal registrerer klik på den. Jeg bruger openGL, og problemet er at knappen ikke er firkantet, men har mange kurvede sider og former. Ved at bruge masks, har jeg fået det op på et rektangel med texturemapping (nehe tutorial 20), men hvordan kan jeg registrerer et tryk hvis det er på selve knappen, og ikke resten af rektanglet? Kan man det? Eller skal man dele det op i mindre rektangler, hvilket vil gøre texturemapping meget mere besværligt.
5 svar postet i denne tråd vises herunder
0 indlæg har modtaget i alt 0 karma
0
0
Jeg har kigget lidt på det, men regions lader til kun at gælde relativt ordinære regioner (cirkler, rektangler osv.). Jeg ledder efter en metode til at vælg knapper med f.eks. 20 stjerneformede huller, eller med form som en hund.
Den anden metode kunne sikkert godt bruges, men har ikke kunnet finde noget om hvordan man får farven fra det klikkede punkt, eller hvordan man kun vælger farver fra knappen, og ikke fra alt mulig andet, da knappen jo indeholder "huller".
0
Jeg er nået frem til følgende:
1. Find ud af om der er klikket på firkanten
2. Substraher firkantens nederste venste hjørne
3. brug de nu fundne koordinater til at finde et punkt i "masken", et texture der er loaded ligesom selve billedet/knappen
4. Find ud af om dette punkt er sort eller hvidt.
Firkantens størele skal jeg nok få til at passe, men punkt 3 og 4 kan jeg ikke finde ud af. Er der en der kan hjælpe med det.
0
Du kan naturligvis også lave et 2D array i hukommelsen som passer med din knap:
char KnapData[32][32] =
{
{0,0,1,0,1, ... },
{0,1,1,1,0, ...},
...
};
Hvis DataKnap[y][x] er 1 er det på knappen, ellers er det undenfor.
0
Ja, det ser ud til at virke fint. Tak for hjælpen.