Redessiner un control sacadé

Résolu
ducker88 Messages postés 277 Date d'inscription lundi 9 février 2004 Statut Membre Dernière intervention 4 mai 2008 - 24 août 2006 à 15:37
ducker88 Messages postés 277 Date d'inscription lundi 9 février 2004 Statut Membre Dernière intervention 4 mai 2008 - 24 août 2006 à 16:15
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

sebmafate Messages postés 4936 Date d'inscription lundi 17 février 2003 Statut Membre Dernière intervention 14 février 2014 37
24 août 2006 à 15:50
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#]
3
ducker88 Messages postés 277 Date d'inscription lundi 9 février 2004 Statut Membre Dernière intervention 4 mai 2008
24 août 2006 à 16:15
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
0
Rejoignez-nous