Sujuv animatsioon C # keeles

By | november 20, 2021

Vedelike C # animatsioonide loomine erinevates arvutisüsteemides võib olla keeruline ülesanne. Siiski on lihtne meetod programmi käitumise kohandamiseks soovitud kaadrite arvule sekundis.

Objektide animeerimine tähega C # võib tähendada palju erinevaid asju.

Esiteks oleks piltide jada animeerimine animeeritud GIF-ina. Sel juhul on .Net Frameworkis juba olemasolev tugi, kuid võite soovida hallata raami joonist kaadri kohta.

Teine animatsiooni vorm on koodiga loodud kujutised. GDI% 2B suudab joonistada väga keerulist graafikat ja selle sujuv animeerimine võib teie .Neti rakendustele kvaliteedile lisamõõtme lisada.

Lõpuks tahavad programmeerijad mõnikord animeerida aknavormi käitumist, nagu suurus, asukoht, tekst jne. Kuigi need on objekti omadused, tahame, et need muutuksid tavalises vahemikus, sõltumata arvuti protsessori kiirusest.

Esimene samm pideva FPS-animatsiooni kirjutamisel C #-s on otsustada, kuidas mõõta protsessori tsükleid. Kõige sagedamini kasutatavad objektid aja mõõtmiseks on Taimer objekt ja DateTime klass. Kuigi mõlemat on lihtne kasutada, puudub neil täpsus. Selle asemel kasutame klassi System.Diagonistics.StopWatch.

StopWatch klass kasutab protsessori tsüklite jälgimiseks QueryPerformanceTimer API kutset, mis on täpsem. Suurem täpsus tähendab sel juhul pidevat animatsiooni.

Põhimõtteliselt soovite jälgida kolme väärtust, millest kaks muutuvad pidevalt:

  • Intervall = stopper. Sagedus / [target FPS (30.0 for example)]
  • currentTicks = Stopper.GetTimestamp ()
  • lastTicks = sama, mis currentTicks, kuid tehtud eelmisel animatsiooni joonistamisel

C # algoritmi loogika pole liiga keeruline. Lihtsamalt öeldes töötab silmus pidevalt, kuid soovite, et animatsioon töötaks/värskendaks ainult siis, kui viimasel arvul CPU tsüklitel ja praegusel tsüklite arvul on varem arvutatud intervallis vähemalt üks lünk. Siis ja alles siis värskendatakse animatsiooni.

Tulemuseks on pidev animatsioon, olenemata sellest, kui kiire arvuti on. Lihtsalt kohandage FPS oma süsteemi järgi ja see on tajutav kiirus süsteemide vahel.

Põhjus, miks see töötab, on see, et animatsioonid ei jookse ilma ajuta lihtsa while/for tsükli jooksul. Silmus kasutab hostarvuti CPU tsükleid, et reguleerida animatsiooni värskendamise intervalli.

Lisa kommentaar

Sinu e-postiaadressi ei avaldata. Nõutavad väljad on tähistatud *-ga