Probleme pour dessiner

Résolu
LordOfTheShadow Messages postés 174 Date d'inscription vendredi 22 décembre 2000 Statut Membre Dernière intervention 9 septembre 2010 - 5 nov. 2008 à 21:28
LordOfTheShadow Messages postés 174 Date d'inscription vendredi 22 décembre 2000 Statut Membre Dernière intervention 9 septembre 2010 - 6 nov. 2008 à 12:32
Et oui c'est encore moi!!! (Désolé pour la coloration syntaxique...)
Je veux dessiner depuis un usercontrol mais y'a un probleme...voici le code:

private
Graphics g;

private
void button1_Click(object sender, EventArgs e)
{
         Dessiner(); //On lance la procédure Dessiner (voir plus bas).
}

public
void Dessiner()
{
         g = this.CreateGraphics(); //On initalise notre graphics à partir du usercontrol (ici c'est this).
         DessinerTrait();
}

publicvoid
DessinerTrait()
{
         Pen
styloNoir = newPen(Color.Black, 1); //On crée un stylo avec ses caractéristiques.
       //On crée deux points (ben oui une ligne se fait avec deux points).

         Point
Point1 = newPoint(1, 3);
         Point Point2 = newPoint(4, 3);
         //Et enfin on dessine la ligne.

         g.DrawLine(styloNoir, Point1, Point2);

}

Mon problême c'est que si je lance ce code depuis le load de mon usercontrol (parceque je veux le faire depuis un usercontrol) ça ne marche pas. Je suis obligé de faire passer par un bouton. Ce que j'aimerai c'est que sur mon usercontrol il se dessine des choses au lancement mais sans avoir à cliquer sur un bouton qui en plus gâche mon usercontrol. Si quelqu'un a un tuyau je le remercie d'avance. Ca me torture l'esprit depuis un moment.

La connaissance est la plus grande des richesses.

3 réponses

Lutinore Messages postés 3246 Date d'inscription lundi 25 avril 2005 Statut Membre Dernière intervention 27 octobre 2012 41
6 nov. 2008 à 00:13
Salut, les dessins GDI ne sont pas persistants, renseigne toi sur l'évènement Paint et la méthode OnPaint.

Remplace tout ton code par cette méthode dans ton UserControl :

protected override void OnPaint( PaintEventArgs args )
{
    //base.OnPaint( args );


    args.Graphics.DrawLine( Pens.Black,
        new Point( 10, 10 ), new Point( 100, 10 ) );
}
3
LordOfTheShadow Messages postés 174 Date d'inscription vendredi 22 décembre 2000 Statut Membre Dernière intervention 9 septembre 2010 5
6 nov. 2008 à 12:26
J'en avais entendu parlé de cette méthode (OnPaint) mais n'est-elle pas valable que pour les PictureBox? Enfin je vais essayer ça (avec le override) pour voir si ça marche et puis je te tiens au courant. Merci Lutinore.

La connaissance est la plus grande des richesses.
0
LordOfTheShadow Messages postés 174 Date d'inscription vendredi 22 décembre 2000 Statut Membre Dernière intervention 9 septembre 2010 5
6 nov. 2008 à 12:32
C'est bon ça marche!!! Merci bien Lutinore.

La connaissance est la plus grande des richesses.
0
Rejoignez-nous