Bonsoir à tous ,
je déplace un petit bitmap sur mon écran à l'aide des touches fléchées du clavier ; le bitmap se déplace à toute vitesse et je souhaiterais ralentir son déplacement .
Quelles sont les diverses possibilitées de faire ?
Version imprimable
Bonsoir à tous ,
je déplace un petit bitmap sur mon écran à l'aide des touches fléchées du clavier ; le bitmap se déplace à toute vitesse et je souhaiterais ralentir son déplacement .
Quelles sont les diverses possibilitées de faire ?
Bonjour,
Utiliser Sleep et aussi une fonction pour récupérer le temps actuel afin de faire une synchronisation sur 60 images par secondes, par exemple.
Merci ça va le faire !
:ccool:
Salut il faut absolument éviter Sleep si tu veux déplacer une image
Il faut :
1 obtenir un premier temps/deuxième temps en ms avec timeGetTime() ( ou QueryPerformanceCounter)
2 obtenir le deuxième temps et le soustraire au premier
Si la différence est supérieure à un seuil alors tu affiches la bitmap
Puis il faut recapter la deuxième tempo
tu peux utiliser un Timer avec SetTimer mais c'est moins précisCode:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24 int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance, PSTR szCmdLine, int iCmdShow) { HWND hWnd; MSG msg; WNDCLASSEX wndclass; static DWORD dwStart,dwNext,dwDelta2; static DWORD dwPlayer,dwStart3; static DWORD dwStart2; static int X,Y; static RECT rect; static POINT pt; dwStart3=dwPlayer=dwStart2=dwDelta2=dwNext=dwStart=timeGetTime(); //.......création de la fenêtre avec createwindow // et apres GetMessage dwNext=timeGetTime(); if((dwNext-dwStart)>75) //75 c'est la tempo en ms { ::GetCursorPos(&pt); BaseJeu->ScrutePositionSouris(pt.x ,pt.y ); dwStart=timeGetTime(); }