Graphics + ca deconne + Help

Signaler
Messages postés
903
Date d'inscription
mercredi 23 février 2005
Statut
Membre
Dernière intervention
16 juin 2010
-
Messages postés
6351
Date d'inscription
samedi 1 juin 2002
Statut
Modérateur
Dernière intervention
2 août 2014
-
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

Messages postés
6351
Date d'inscription
samedi 1 juin 2002
Statut
Modérateur
Dernière intervention
2 août 2014
90
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#
Messages postés
903
Date d'inscription
mercredi 23 février 2005
Statut
Membre
Dernière intervention
16 juin 2010
2
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.
Messages postés
6351
Date d'inscription
samedi 1 juin 2002
Statut
Modérateur
Dernière intervention
2 août 2014
90
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#
Messages postés
903
Date d'inscription
mercredi 23 février 2005
Statut
Membre
Dernière intervention
16 juin 2010
2
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.
Messages postés
6351
Date d'inscription
samedi 1 juin 2002
Statut
Modérateur
Dernière intervention
2 août 2014
90
Exactement :-)

Cocoricoooooooo !!!!
coq
MVP Visual C#