cs_stailer
Messages postés507Date d'inscriptionjeudi 28 mars 2002StatutMembreDernière intervention13 mai 2009
-
26 juil. 2004 à 15:32
TheSaib
Messages postés2367Date d'inscriptionmardi 17 avril 2001StatutMembreDernière intervention26 décembre 2007
-
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..
cs_coq
Messages postés6349Date d'inscriptionsamedi 1 juin 2002StatutMembreDernière intervention 2 août 2014101 26 juil. 2004 à 18:15
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
cs_coq
Messages postés6349Date d'inscriptionsamedi 1 juin 2002StatutMembreDernière intervention 2 août 2014101 26 juil. 2004 à 15:43
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
cs_coq
Messages postés6349Date d'inscriptionsamedi 1 juin 2002StatutMembreDernière intervention 2 août 2014101 26 juil. 2004 à 16:09
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 !!!!
Vous n’avez pas trouvé la réponse que vous recherchez ?
cs_stailer
Messages postés507Date d'inscriptionjeudi 28 mars 2002StatutMembreDernière intervention13 mai 20091 26 juil. 2004 à 17:03
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));
}
cs_stailer
Messages postés507Date d'inscriptionjeudi 28 mars 2002StatutMembreDernière intervention13 mai 20091 26 juil. 2004 à 18:02
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.