Novo

Forum kao aplikacija na telefonu

Dodajte forum na početni ekran i koristite ga kao aplikaciju, sa menijem na dnu ekrana.

  • 3 odgovora
  • 2.759 pregleda

Najnovija ↓

Fast drawing? 25.10.2003. u 19:24 · pre 280 meseci #1
Ovako stoje stvari:

Pokusavam da iscrtam polyline od 1024 tacke svakih 200 ms. Prvo sam pokusao da to sve stavim u onDraw proceduru i da na timer (multimedijalni) uradim InvalidateRect da se sve to ponovo iscrta sa novim vrednostima (arrayom tacaka) koje stizu sa USB porta.

Al ne lezi vraze i pre razocaravajuceg ispravljanja (bilo je i situacija 102 errors, 18 warnings) i konacnog pustanja u rad predpostavljao sam da ce da blinka (flikeruje).
Imao sam rezervu Duble buffering (Crtanje Bitmape u memorij i slanje na ekran) i to sad izgleda radi, ali video sam druge programe koji otprilike ovako brzo crtaju OnPaint i ne flikeruju.
Dakle moze.

Ako bi neko mogo da me uputi na neko ucilo ili podeli iskustva bio bih mu zahvalan.

Usput hvala pojedincima na drustveno korisnom radu.
Bez njih moj Multimedijalni tajmer ne bi protiktao.
Potpis
http://gitarologija.com
Re: Fast drawing? 26.10.2003. u 02:54 · pre 280 meseci #2
Pravilo prvo:

Uvek crtaj u memoriji (tj. u kompatibilnom DC-ju) i kad je gotovo uradi BLT
u dc(this). BTL je garantovano sinhron sa vertical blanking intervalom, tako
da nikada nece doci do flicker-a.

Pronadji na www.codeproject.com klasu CMemDC od Keith Rule-a - fina
dosetka koja lepo radi

Pravilo drugo:

Ne prefarbavaj sto ne moras:
- razdvoj regione koji se nikada ili retko prefarbavaju od onih koji se svaki
cas prefarbavaju.
- umesto InvalidateRect mozes koristiti i InvalidateRgn
- ako istu povrsinu prefarbavas dva ili vise puta flicker je garantovan

Pravilo trece:
- sinhronizuj crtacke rutine sa metodima koji od spolja setuju parametre
bitne za crtanje. Upotrebi kriticnu sekciju (CCriticalSection radi sasvim
lepo). Message handleri su medjusobno sinhronizovani, ali ostale metode
iste klase ne mora da budu (i najverovatnije nisu).
Re: Fast drawing? 28.10.2003. u 13:19 · pre 280 meseci #4
Mala ispravka:

Ako crtas u memoriji, ponovno prefarbavanje iste povrsine nece prouzrokovati
flicker, jedino ces potrositi vise CPU ciklusa. Drugim recima, ako je ispunjeno
prvo pravilo, drugo nema toliko veze.

Ako crtas direktno, koristeci dc(this), onda su optimizacije opisane pod drugim
pravilom vise nego neophodne.

Pozdrav i nema na cemu
Prijavite se da biste odgovorili u ovoj temi.PrijavaRegistracija

Premeštanje teme