Blinkende grafik

Tags:    c++

<< < 12 > >>
Hej,

Jeg har et stykke grafik, jeg har lavet i PhotoShop, i en HDC. Jeg har så lavet det sådan, at man ved hjælp af piletasterne kan bevæge HDC'en, altså billedet. Billedet er 30*81px. Men når man bevæger billedet, så blinker det nogle gange hvidt. Hvordan forhindrer jeg dette? Jeg tror, blinket er den tid, det tager for computeren at loade og vise mit billede, men det skal den gerne gøre uden at blinke.

Jeg har forsøgt med WM_ERASEBKGND, men den kan ikke bruges i denne situation.

Hilsen Thomas



12 svar postet i denne tråd vises herunder
1 indlæg har modtaget i alt 1 karma
Sorter efter stemmer Sorter efter dato
Grunden til det blinker hvidt er fordi alt grafik i dit program bliver slettet og billedet bliver printet igen.
Måden du fjerne det på er at du istedet for at tegnet billedet direkte på skærmen, tegner på det i en buffer, også tegner på bufferen på skærmen.

Her er noget kode som viser hvordan man kan gøre det i praksisk.

Fold kodeboks ind/udKode 

Håber du får det til at virker ellers skriver du bare igen, men post lige noget kode så :)

Mvh.
Sieg



Du skal vel ikke loade billedet flere gange ??



Den tanke gjorde jeg mig, men jeg håbede, svaret var et andet. Men nu har jeg gjort, så mine bitmaps kun bliver loaded én gang. Udover det har jeg forsøgt at skåne WM_PAINT så meget som muligt, ved at give den så lidt arbejde som muligt.

WM_PAINT:
Fold kodeboks ind/udKode 


Hele min Windows-procedure:
Fold kodeboks ind/udKode 




Koden har jeg postet. Men jeg har nu prøvet at sætte din kode ind (selvfølgelig med modifikationer, så det hele passer sammen), men desværre uden held. Nu ser min windows-procedure således ud:
Fold kodeboks ind/udKode 

Resultat: Blank skærm.



prøv at indsætte følgende kode i din WM_PAINT:
Fold kodeboks ind/udKode 




Stadig blank skærm.:|



Kan du ikke lige poste din nye kode, så er det lidt nemmere.



Sure.

Fold kodeboks ind/udKode 




Har lige leget lidt med det, det viser sig fejlen kommer når man blander SRCAND, SRCPAINT og SRCCOPY. Prøv lige at udskifte dem alle med SRCCOPY, og se om der ikke kommer noget frem.



Hmm... Stadig blank side. Siden du har lokaliseret fejlen, kan du så ikke rette den i min kode og poste den her?



Indlæg senest redigeret d. 07.08.2007 23:12 af Bruger #8985
<< < 12 > >>
t