Gå til innhold

Anbefalte innlegg

Hei, vel.

Jeg har sett rundt og funnet mange forskjellige måter og kunne tegne noe direkte på skjermen.

(Jeg mener at jeg kan tegne direkte på skjermen uanset hvilket program som skulle være oppe. Og at det blir værende der.)

 

Jg har klart og gjøre dette, MEN det forsvinner når det er noe som blir dratt over eller noe som kommer under det jeg har tegnet.

 

Jeg skulle gjerne ha likt og vist åssen jeg kan forhindre dette.

 

Takk for all hjelp som skulle komme.

 

Jeg trenger og vite en funksjon eller slikt.

Eksempler er også nyttig :)

Lenke til kommentar
Videoannonse
Annonse

Det høres ut som det er noe bøllete på gang her :p

 

Men du må sannsynligvis ned på API-nivå, og da skal det være bare å sette on-top-flagget på vinduet du skriver til... (Ja du skriver til et vindu selv om du ikke skriver til et vindu.)

 

Det kan hende du finner noe nyttig hvis du googler "polygon window region c#" eller noe sånt.

 

-C-

Lenke til kommentar

Det enkleste som fungerer saa lenge det ikke er snakk om aa ligge over spill er vanlig OnTop/TopMost properties paa Windows Formen din eller WPF vinduet. Gjerne med gjennomsiktighet slik at det kun ser ut som tegning, maa kanskje ha en timer som stadig setter vinduet oeverst ogsaa da 2 TopMost vinduer fint kan overlappe hverandre.

 

Skal du derimot ha den til aa vises over spill, saa er du noedt til aa kode litt DirectX for aa faa det til. Det "farlige" med det er om du spiller spill med anticheat paa, saa kan du risikere aa bli bannet dersom de registrerer en slik DirectX "hack". Steam og Xfire benytter det samme systemet, men de er paa en whitelist hos disse anticheat motorene.

 

(Opera har laast seg paa engelsk tastatur... grr...)

Lenke til kommentar

Det enkleste som fungerer saa lenge det ikke er snakk om aa ligge over spill er vanlig OnTop/TopMost properties paa Windows Formen din eller WPF vinduet. Gjerne med gjennomsiktighet slik at det kun ser ut som tegning, maa kanskje ha en timer som stadig setter vinduet oeverst ogsaa da 2 TopMost vinduer fint kan overlappe hverandre.

 

Skal du derimot ha den til aa vises over spill, saa er du noedt til aa kode litt DirectX for aa faa det til. Det "farlige" med det er om du spiller spill med anticheat paa, saa kan du risikere aa bli bannet dersom de registrerer en slik DirectX "hack". Steam og Xfire benytter det samme systemet, men de er paa en whitelist hos disse anticheat motorene.

 

(Opera har laast seg paa engelsk tastatur... grr...)

Vel, hensiktet var nok men for spill.

Jeg har bruk Draw Graphic men den gir flashing.

Så, jeg har sett at noen har sakt ad dublebuffer (eller hva det var.) Ville virke.

Men, jeg regner med at dette ikke vil gå så enkelt i C# som i C++....

Lenke til kommentar

Hvis du skal lage et spill, så vil du tegne på et vindu, ikke over grafikkområdet. I C# (dersom du bruker Windows Forms, og ikke har Aero på) så skrur du på double-buffering ved å kalle SetStyle() i constructoren og skru på doublebuffer flagget.

 

Bruker du WPF eller DirectX trenger du ikke tenke på det.

 

Du burder også gjøre all tegning i Paint eventet eller override OnPaint.

Endret av GeirGrusom
Lenke til kommentar

Om formålet var å lage et spill som interakterer med skrivebordet - dvs du vil benytte skrivebordet som bakgrunn for hele spillet - så anbefaler jeg deg å benytte WPF. Ta et vindu som dekker hele skjermen og er gjennomsiktig. Så tegner du så mye som du vil innenfor dette vinduet. (har aldri brukt DirectX skikkelig og vet ikke om det er like enkelt der)

 

Effekten blir visuelt det samme som om du tegner direkte på skrivebordet. Brukeren kan fremdeles klikke på ikoner og dra dem rundtom så lenge ikonet befinner seg på det gjennomsiktige området. Dersom du ikke vil at det skal gå an å trykke så endre bakgrunnsfargen til et hakk mindre gjennomsiktig enn 100%, da vil det ikke gå an å klikke på ikoner bakom.

 

Gjennomsiktighet og desktop er helt topp i WPF, og sugent i Winforms.

  • Liker 1
Lenke til kommentar

Om formålet var å lage et spill som interakterer med skrivebordet - dvs du vil benytte skrivebordet som bakgrunn for hele spillet - så anbefaler jeg deg å benytte WPF. Ta et vindu som dekker hele skjermen og er gjennomsiktig. Så tegner du så mye som du vil innenfor dette vinduet. (har aldri brukt DirectX skikkelig og vet ikke om det er like enkelt der)

 

Effekten blir visuelt det samme som om du tegner direkte på skrivebordet. Brukeren kan fremdeles klikke på ikoner og dra dem rundtom så lenge ikonet befinner seg på det gjennomsiktige området. Dersom du ikke vil at det skal gå an å trykke så endre bakgrunnsfargen til et hakk mindre gjennomsiktig enn 100%, da vil det ikke gå an å klikke på ikoner bakom.

 

Gjennomsiktighet og desktop er helt topp i WPF, og sugent i Winforms.

Ja, det er sant. Det er litt brattere læringskurve i WPF enn Windows Forms, men det er et vesentlig bedre verktøy når en lærer seg det.

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å
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...