[C#] [Winform] rafraichissement graphique [Résolu]

cs_stailer 511 Messages postés jeudi 28 mars 2002Date d'inscription 13 mai 2009 Dernière intervention - 26 juil. 2004 à 15:32 - Dernière réponse : TheSaib 2369 Messages postés mardi 17 avril 2001Date d'inscription 26 décembre 2007 Dernière intervention
- 27 juil. 2004 à 00:36
Salut,

POurriez-vous me dire pourquoi ce code fonctionne sur un clic de bouton ou n'importe quel autre clic :

// définition du titre de la fenêtre
Graphics g = this.pictBarrehaut.CreateGraphics();
g.DrawString("Titre de la fenêtre",new Font("Arial Black",10), new SolidBrush(Color.Black),
new Rectangle(0,0,250,20));

et ne fonctionne absolument pas au chargement de ma winform.... Et en plus l'image est détruite si je redimensionne ma form.

J'ai bien lu qu'il fallait "invalidate" mais ca ne fonctionne pas..

<-- St@iLeR -->
Afficher la suite 

Votre réponse

9 réponses

Meilleure réponse
cs_coq 6366 Messages postés samedi 1 juin 2002Date d'inscription 2 août 2014 Dernière intervention - 26 juil. 2004 à 18:15
3
Merci
oui j'ai remarquer ça aussi
dans une appli "normale", ce probleme est resolu en s'abonnant à l'event Paint du form
mais dans ton cas je ne sais pas si c'est vraiment une bonne idée de le faire

Cocoricoooooooo !!!!

Merci cs_coq 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 92 internautes ce mois-ci

Commenter la réponse de cs_coq
cs_coq 6366 Messages postés samedi 1 juin 2002Date d'inscription 2 août 2014 Dernière intervention - 26 juil. 2004 à 15:43
0
Merci
au chargement la zone de dessin n'est pas encore affichée, donc le 1er affichage efface ton dessin de la même manière que le redimensionnement
et pour ce qui est de cet effacement : quand tu dessines sur une zone, celle ci ne conserve pas ces données de dessin, donc tu dois redessiner a chaque fois que la zone de dessin est invalidée (autre fenetre passant au dessus, redimenssionnement etc etc)

si tu te sert d'un picturebox comme le nom le laisse penser, tu peux par contre dessiner sur un objet Image ou Bitmap, et l'affecter au picturebox
ainsi a chaque refresh le controle PB redessine l'image qui lui est affectée

Cocoricoooooooo !!!!
Commenter la réponse de cs_coq
cs_stailer 511 Messages postés jeudi 28 mars 2002Date d'inscription 13 mai 2009 Dernière intervention - 26 juil. 2004 à 15:51
0
Merci
Ok, merci pour ces renseignements... Mais concrètement ?

J'ai bien mis Invalidate() dans l'évènement OnPaint de mon form, mais ca ne fonctionne pas quand même.

Tu aurais un exemple concret ?

<-- St@iLeR -->
Commenter la réponse de cs_stailer
cs_coq 6366 Messages postés samedi 1 juin 2002Date d'inscription 2 août 2014 Dernière intervention - 26 juil. 2004 à 16:09
0
Merci
Invalidate provoque l'envoi d'un message Paint au controle en question
donc mettre Invalidate dans la methode OnPaint n'est pas vraiment conseillé, car OnPaint appelle Invalidate qui provoque l'execution de OnPaint qui appelle Invalidate...
une belle boucle infinie en somme

donc tu dois "dessiner" sur tes controles à ce moment là, pas appeler Invalidate

Cocoricoooooooo !!!!
Commenter la réponse de cs_coq
cs_stailer 511 Messages postés jeudi 28 mars 2002Date d'inscription 13 mai 2009 Dernière intervention - 26 juil. 2004 à 17:03
0
Merci
Yep,

J'ai fait quelque chose qui marche mais je ne suis pas sur que ce soit bon :

j'ai mis un timer sur un interval de 1 et j'ai mis ca dans l'évènement du timer :

private void timerRedessine_Tick(object sender, System.EventArgs e)
{
g.DrawString(
"Titre de la fenêtre",
new Font("Arial Black",10), 
new SolidBrush(Color.Black),
new Rectangle(0,0,250,20));
}


Qu'en penses-tu ?

<-- St@iLeR -->
Commenter la réponse de cs_stailer
cs_coq 6366 Messages postés samedi 1 juin 2002Date d'inscription 2 août 2014 Dernière intervention - 26 juil. 2004 à 17:22
0
Merci
ben là tu redessines ton titre de fenetre même quand ce n'est pas necessaire.

Met plutot ton code de dessin dans la methode associée à l'event Paint

Cocoricoooooooo !!!!
Commenter la réponse de cs_coq
cs_stailer 511 Messages postés jeudi 28 mars 2002Date d'inscription 13 mai 2009 Dernière intervention - 26 juil. 2004 à 18:02
0
Merci
Alors c'est ce que j'ai fait après ton précédent message,
mais ca ne fonctionnait pas à tous les coups... Si on déplacait la fenêtre en dehors de l'écran ca se redessinait pas bien.

Et au chargement de l'appli c'était pareil, le graphique était correct uniquement après la redimension de la form.

En fait tout ca est dans un UserControl.
Et ces problèmes dont je te parle sont toujours présents lorsque je mets le code précédent dans l'event paint du user control.

Y a un truc que je dois pas faire...

<-- St@iLeR -->
Commenter la réponse de cs_stailer
cs_stailer 511 Messages postés jeudi 28 mars 2002Date d'inscription 13 mai 2009 Dernière intervention - 26 juil. 2004 à 18:20
0
Merci
Ok ca me rassure.

Merci (encore) pour ton attention.

<-- St@iLeR -->
Commenter la réponse de cs_stailer
TheSaib 2369 Messages postés mardi 17 avril 2001Date d'inscription 26 décembre 2007 Dernière intervention - 27 juil. 2004 à 00:36
0
Merci
Prenez l'habitude de fermer les threads svp :)

::|The S@ib|::
MVP C#.NET
Commenter la réponse de TheSaib

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.