Jevn animasjon i C #

Av | november 20, 2021

Å generere flytende C #-animasjoner på forskjellige datasystemer kan være en vanskelig oppgave. Imidlertid er det en enkel metode for å justere oppførselen til et program til et mål antall bilder per sekund.

Å animere objekter med C # kan bety mange forskjellige ting.

Først ville være å animere en sekvens av bilder som en animert GIF. I dette tilfellet er det allerede noe eksisterende støtte i .Net Framework, men det kan være lurt å administrere rammetegningen per ramme.

En annen form for animasjon er med kodegenererte bilder. GDI% 2B kan tegne veldig kompleks grafikk, og sømløs animasjon kan legge til en ekstra dimensjon av kvalitet til .Net-applikasjonene dine.

Til slutt, noen ganger ønsker programmerere å animere oppførselen til vindusformen, for eksempel størrelse, plassering, tekst og så videre. Selv om disse er objektegenskaper, vil vi at de skal endres innenfor et vanlig område, uavhengig av CPU-hastigheten til datamaskinen.

Det første trinnet i å skrive en konstant FPS-animasjon i C # er å bestemme hvordan CPU-sykluser skal måles. De mest brukte objektene for å måle tid er Timer-objektet og DateTime-klassen. Selv om begge er enkle å bruke, mangler de nøyaktighet. I stedet vil vi bruke System.Diagonistics.StopWatch-klassen.

StopWatch-klassen bruker QueryPerformanceTimer API-kallet til å spore CPU-sykluser, som er mer nøyaktig. Større nøyaktighet betyr i dette tilfellet mer konstant animasjon.

I utgangspunktet vil du holde styr på tre verdier, hvorav to vil endre seg konstant:

  • Intervall = Stoppeklokke. Frekvens / [target FPS (30.0 for example)]
  • currentTicks = Stopwatch.GetTimestamp ()
  • lastTicks = samme som currentTicks, men tatt forrige gang animasjonen ble tegnet

Logikken bak C #-algoritmen er ikke for komplisert. Enkelt sagt vil en sløyfe kjøres konstant, men du vil bare at animasjonen skal kjøre/oppdateres når det siste antallet CPU-sykluser og det nåværende antallet sykluser har minst ett gap i intervallet du beregnet tidligere . Da og først da blir animasjonen oppdatert.

Resultatet er en konstant animasjon uansett hvor rask en datamaskin er. Bare juster FPS til ditt eget system og dette vil være den opplevde hastigheten mellom systemene.

Grunnen til at det fungerer er fordi animasjonene ikke kjører på en enkel stund / for loop uten hjerne. Sløyfen bruker CPU-syklusene til vertsdatamaskinen for å justere intervallet som animasjonen oppdateres med.

Legg igjen en kommentar

Din e-postadresse vil ikke bli publisert. Obligatoriske felt er merket med *