Graphics + ca deconne + Help

cs_emmanuel9 Messages postés 903 Date d'inscription mercredi 23 février 2005 Statut Membre Dernière intervention 16 juin 2010 - 24 mars 2005 à 10:22
cs_coq Messages postés 6349 Date d'inscription samedi 1 juin 2002 Statut Membre Dernière intervention 2 août 2014 - 24 mars 2005 à 17:08
Bonjour,

Un truc que j'ai pas pigé c'est que je dessine un objet graphics, il se dessine seulement si je le met dans l'evenement click d'un bouton ou autre. Si je le met dans Form1_Load il se dessine point.

Et en plus quand je deplace mon objet Graphics et que je le fais glisser en dehors de la zone d ecran, quand je le fais revenir il a tendance à s'effacer.

Quelqun aurait t'il une solution pour ces problèmes ?

Par avance, merci.

25 réponses

cs_coq Messages postés 6349 Date d'inscription samedi 1 juin 2002 Statut Membre Dernière intervention 2 août 2014 101
24 mars 2005 à 15:54
Et le Bitmap nous sert juste de buffer pour afficher le "résultat" en un coup au lieu d'avoir un refresh à chaque DrawLine, donc pas de problème pour tes camemberts par la suite :-)

Cocoricoooooooo !!!!
coq
MVP Visual C#
0
cs_emmanuel9 Messages postés 903 Date d'inscription mercredi 23 février 2005 Statut Membre Dernière intervention 16 juin 2010 2
24 mars 2005 à 16:31
merci coq, j'avais reussi en faisant comme ca :


private: System::Void panel_Paint(System::Object * sender, System::Windows::Forms::PaintEventArgs * e)


{




Graphics * pg = e->get_Graphics() ;




SolidBrush * br1 =
new SolidBrush(Color::Black) ;


Pen * p =
new Pen(br1,1) ;



// dessin du cadre


pg->DrawLine(p,2,2,630,2) ;
// horizontal haut

etc....

le dessin se dessine tout seul même quand il sort de l'ecran, mais je vais essayer ta méthode qui m'a l'air un peut plus complète.
0
cs_coq Messages postés 6349 Date d'inscription samedi 1 juin 2002 Statut Membre Dernière intervention 2 août 2014 101
24 mars 2005 à 16:39
Ah oui j'avais oublier qu'on avait le Graphics fourni en arg de l'event lol
Le code de ma méthode Paint devient donc :
private void panel_Paint(object sender, System.Windows.Forms.PaintEventArgs e)
{
e.Graphics.DrawImageUnscaled(b, 0, 0);
}

Ba toi ce que tu fait c'est que tu dessines directement sur le panel, quand tu aurais beaucoup plus de choses à dessiner tu comprendras pourquoi on prefere passer par un buffer intermediaire et dessiner le resultat :-)

Cocoricoooooooo !!!!
coq
MVP Visual C#
0
cs_emmanuel9 Messages postés 903 Date d'inscription mercredi 23 février 2005 Statut Membre Dernière intervention 16 juin 2010 2
24 mars 2005 à 16:54
quand je vais passer à mes camenberts, faudra pas être epilleptique pour utiliser mon programme donc faut mieux que je passe par un buffer en effet. ca s'appellerais pas le doublebuffering cette méthode d'ailleur, c'est utilisé dans les jeux pour eviter l'effet de scintillement je crois. On dessine d'abord en mémoire avant d'afficher. Y'a même le triplebuffering pour la 3d je crois.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_coq Messages postés 6349 Date d'inscription samedi 1 juin 2002 Statut Membre Dernière intervention 2 août 2014 101
24 mars 2005 à 17:08
Exactement :-)

Cocoricoooooooo !!!!
coq
MVP Visual C#
0
Rejoignez-nous