Redessiner un control sacadé

Résolu
Signaler
Messages postés
277
Date d'inscription
lundi 9 février 2004
Statut
Membre
Dernière intervention
4 mai 2008
-
Messages postés
277
Date d'inscription
lundi 9 février 2004
Statut
Membre
Dernière intervention
4 mai 2008
-
Bonjour a tous,

J'ai derivé un controle (Panel) dans le but de le personnalisé en le redessinant.
Je le redimmensionne a l'aide d'un timer sur clic utilisateur.

Quand je diminue mon controle je n'ai aucun probleme, par contre quand je l'augmente, mon controle est tout sacadé. Quel est la fonction qui permet de redessiner le control ? Merci d'avance pour votre aide.

duck88

2 réponses

Messages postés
4936
Date d'inscription
lundi 17 février 2003
Statut
Membre
Dernière intervention
14 février 2014
38
normalement... il suffit de faire un override de la méthode OnPaint (voire OnPaintBackground) pour redessinner ton controle.

Mais si tu gères en plus une animation, tu dois aussi pensé au fait que lorsque tu redimensionnes ton panel, les controles qui sont à l'intérieure bouge aussi.
l'idée c'est d'appeler les méthode SuspendLayout et ResumeLayout avant et après l'animation.

Pour redessiner un controle, il faut appeler la méthode Invalidate() de celui-ci... Si c'est vraiment urgent (mais je le déconseille pour tes raisons de performances), tu peux utiliser la méthode Refresh().

Sébastien FERRAND (
blog)
Consultant Indépendant
[Microsoft MVP Visual C#]
Messages postés
277
Date d'inscription
lundi 9 février 2004
Statut
Membre
Dernière intervention
4 mai 2008

Je fait bien un override de la méthode OnPaint
Le redimmensionnement du panel a justement pour but de cacher les control a l'interieur.
La methode Invalidate() resoud bien le probleme.

Merci de ton aide.

duck88