Gå til innhold

finne komponeten under , overføre makørpunktene på samme sted i forhold til skjermen


Anbefalte innlegg

Strengt tatt så hører dette nok under Windows programmering , men der gjelder jo bare basic og dos.

 

jeg bruker delphi ( pascal) men det burde ikke ha så mye å si her.

 

utgangspunktet er at jeg ønsker å få til lit fancy (virtuelle) knapper som brukes i Windows ( eller i de andre grafiske brukergrensesnittene som er i bruk).

 

En tradisjonell knapp er jo en helt kvadratisk eller rektangulær knapp med 4 hjørner.

Det synes jeg er lit kjedelig så jeg ønsker å ha flere former/figurer på den

samtidig må den følge de vanlig reglen om utseende ( dissabled,aktiv men ikke trykket inn ,aktiv og trykket inn ) . altså 4 forskjellige valg.

 

Å programmere en egen komponent med alle disse egenskapene men en figurmessing (ser ut som hvilken som hels figur ) utseende virker å være vanskelig

 

så i stedet har jeg valgt å bruke en image ( en standard komponent som lar deg vise et bilde i hele komponentens visuelle område ).

 

Å få til de 4 bildene og skiftet mellom dem avhengig av status på knappen har jeg fått til.

 

Men så begynner det som er lit problematisk.

når man har disse figurene av knapper så er det også ønskelig at de står tett sammen

det firkantede område som det visuelle område knappene bruker gjør at figurknappen ikke kan stå så tett samme som ønskelig , da dette området overlapper hverandre .

 

bildene jeg bruker er forsatt firkantede men deler av bildet er usynlig for å simulere at det ikke er en del av knappen. det gir utslag i at jeg trykker på knappen som er ligger øverst selv om det ser ut som jeg trykker på siden av den , eller en knapp som står ved siden av (denne er egentlig plassert under den øverste)

 

Da ender man opp med egen image ( bilde) komponenter som er stablet over hverandre.

 

siden deler av det bil de viser er gjennomsiktig så er det da ønskelig å flytte fokuset/ kontrollen til den første komponenten ( bildet) som ikke er gjennomsiktig ( ser ut som knappen man klikker på) .

 

altså jeg leser av et bildepunkt .

sjekker hvilken farge det har

hvis fargen da er den som er gjennomsiktig så skal koden på en enkelt måte, sette fokus på den komponenten som har et bildepunkt på samme sted ,som ikke har denne gjennomsiktig fargen( punktet med denne fargen).

 

jeg har fått til å lese av bildepunktet .

Men jeg har ikke funnet helt ut hvordan jeg kan overføre kontrollen til komponenten under.

 

Dett må selvsagt gjentaes med den komponenten helt til fargepunktet har en lovlig ikke gjennomsiktig farge.

Da først kan man utføre handlingen til kompetente .

i dette tilfellet at knappen er trykket ned

 

jeg hadde her håpet på et man også kunne overføre de riktige parametrene til neste komponent når det er behov for det.

 

Her trodde jeg at det gikk an at programmet selv ( koden) kunne finne ut hvilke komponenter som er plaser under den komponenten som er i fokus.

 

men det viker som det ikke er mulig og jeg må plaser komponentene nøyaktig og så ta hensyn til det i koden

Lenke til kommentar
Videoannonse
Annonse

Når brukeren trykker ned musa, finn så alle bildene hvor du har trykket innenfor "hitboxen" og legg disse i en liste. Dette er for å gjøre at ting skal gå fortere.

 

Gå så gjennom alle disse og sjekk om pixelen du trykket på var gjennomsiktig eller kke.

 

Kan legge til jeg aldri har implementert dette manuelt, men ser for meg at i praksis må det være en slik implementasjon du ønsker; men kan være du er på et høyere abstraksjonsnivå som gjør dette vanskelig å fysisk sjekke.

Endret av etse
Lenke til kommentar

jeg vet ikke hvordan jeg for frem denne "hitboxen".

jeg går ut fra at du mer en liste ( listbox eller lignende) der hver komponent listes opp

 

Problemet er finne eller søke opp alle komponenten som er i bruk for så få dem i en liste .

jeg vet rett og slet ikke hvilken metode jeg kan bruke og hvordan det fungerer

 

 

hvilket programmeringsspråk er det du er kjent med ?

( bare for finne ut hvilke muligheter men har eller ikke har )

 

 

 

Forøvrig det jeg finner ut om hit test i hjelpefilen til delphi går på farge kontroll ikke å flytte fokus over på en annen komponent

Endret av den andre elgen
Lenke til kommentar

I WPF under .NET hadde det vært ganske trivielt. Det er sikkert det i Delphi også, men jeg har ikke spesielt mye erfaring med Delphi.

 

Dersom du gjør som etse foreslår, så er det ikke så alt for vanskelig. Lag et konstant array med strukturer som forklarer hvor de forskjellige knappene er. Når du trykker på Canvas eller hva du enn bruker, så tar du denne posisjonen relativt til Canvas.et, og sjekker hvilke figurer i arrayet ditt som treffer posisjonen (det kan være flere)

ettersom firkanter her vil føre til tvetydighet må du slå opp pikselverdien på det aktuelle stedet for å avgjøre hvilken knapp (om noen) som treffes.

Lenke til kommentar

nå forstod jeg ikke helt hva du mente med Array .

Problemet er faktisk få til å søke opp komponentene og finne ut hvor de er plassert.

det eneste som da funger er at jeg må selv bestemme det på forhand.

Altså noe som funger på en statisk måte

 

Det jeg kunne tenke meg som vil fungere er å sende en del parametre fra hvert enkelt bildekomponet (image) til en felles rutine og så ta det derfra.

 

De viktigste parametrene vil da være hvilken knapp (image) er dette, posisjonen til markøren og så fargen i det punktet.

Så må man sammenlign bilde for bilde i forhold til markøren.

Testpunktet må da selvfølgelig justeres i forhold til den den posisjonen hver komponent har .

 

Når det rette punktet er funnet så kan jeg utføre det rette knappetrykket.

 

vil ikke det fungere ?

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...