2010-08-26 5 views
0

Je veux repeindre une partie de la fenêtre pas tout. Je n'ai aucune idée de comment. im en utilisant win32 Veuillez pas ........ SFM
merci à l'avance C++ repeindre partie de la fenêtre


// create rect structure 
RECT rect2; 
rect2.left=0; 
rect2.top=0; 
rect2.right=225; 
rect2.bottom=300; 
// calling invalidateRect when left mouse button is donw 
case WM_LBUTTONDOWN: 
    InvalidateRect(hWnd, &rect2, false); 
    break; 
+0

Réponse simple: ne pas utiliser GDI pour les jeux. Peu importe à quel point vous devez minimiser le travail sur vos redessins, OpenGL ou DirectX est virtuellement * certain * de faire un meilleur travail. –

+0

@Jerry Coffin: En fait, il y a encore de bonnes raisons d'utiliser GDI pour certains jeux. Si la performance est moins importante que la portabilité de très vieux systèmes ou systèmes avec des pilotes de cartes graphiques obsolètes, ou si vous bloquez la 2D dans le logiciel de toute façon, GDI est toujours un choix viable. Par exemple, j'ai créé un moteur de jeu pour les jeux occasionnels basé entièrement sur GDI, mais également optimisé pour fonctionner décemment pour de nombreux scénarios couramment vus dans les jeux occasionnels. –

+0

@Adrian: Si vous êtes content, c'est génial. Bien que la compatibilité avec le matériel/logiciel plus ancien comporte quelques restrictions, j'utilise OpenGL avec beaucoup de succès sous NT 3.5 sur du matériel si vieux que vous ne pouvez plus le trouver en dehors d'un musée. –

Répondre

2

Passez le rectangle de la partie de la fenêtre que vous souhaitez repeindre dans la méthode InvalidateRect(). Lisez here pour plus de détails.

+0

j'ai déjà pensé à cela mais cela n'a pas fonctionné vous pouvez voir mon code mal poster dans la minute – Ramilol

+1

Définir "n'a pas fonctionné". De même, si vous avez votre propre gestionnaire WM_PAINT, vous devez respecter le rectangle de découpe qu'il vous donne. En général, cependant, si c'est pour un jeu, comme mentionné, vous êtes probablement mieux avec DirectX si vous envisagez de faire plus que de simples formes et blocs. – EboMike

+0

tout Im utilisant gdi pour dessiner un rectangle simple et charger quelques images – Ramilol

0

Quel est le problème avec RedrawWindow?

+0

Si je redessine toute la fenêtre, elle utilisera trop de mon cpu – Ramilol

+0

'RedrawWindow' redessine ** partie ** d'une fenêtre. Vérifiez le paramètre 'lprcUpdate'. –

+0

je l'ai essayé et cela n'a pas fonctionné:/ – Ramilol

2

Est-ce que c'est pour un moteur de jeu? Il semble donc que vous êtes préoccupé par l'utilisation du processeur sur un redraw complet. Si c'est le cas, alors je vous recommande d'utiliser une image tampon arrière, de suivre la partie de votre mémoire tampon arrière et de ne copier cette partie sur l'écran qu'une fois le rendu terminé. Ceci s'appelle le double buffering et prendra également soin des problèmes de scintillement que vous pourriez voir.

+0

oui im ​​créer un jeu et im également en utilisant le double tampon dans mon jeu – Ramilol

Questions connexes