Dessin dans picturebox disparait au passage d'une fenetre

Résolu
cs_fcolo Messages postés 201 Date d'inscription mercredi 8 février 2006 Statut Membre Dernière intervention 20 février 2007 - 17 oct. 2006 à 13:29
cs_fcolo Messages postés 201 Date d'inscription mercredi 8 février 2006 Statut Membre Dernière intervention 20 février 2007 - 17 oct. 2006 à 20:55
Bonjour,

J'ai un peit soucis avec un dessin que je dessine dans une pictureBox.
Apres l'avoir dessine et afficher, si je fais passer une fenetre par dessus, le dessin disparait sous cette fenetre, les pixels sont mangés si je puis dire.
Savez vous ce que j'ai pu oublier pour fixer le dessin sur la picturebox?

Voici un exemple de code.

private
void Dessiner()
{
System.Drawing.Pen myPen =
new System.Drawing.Pen(System.Drawing.Color.Red);
myPen.Width=2;
Graphics graph = pictureBox1.CreateGraphics();
graph.DrawLine(myPen,
new Point(0,0),
new Point(pictureBox1.Size.Width,pictureBox1.Size.Height));
graph.Flush();

//graph.Save();
}

f.colo

8 réponses

sebmafate Messages postés 4936 Date d'inscription lundi 17 février 2003 Statut Membre Dernière intervention 14 février 2014 38
17 oct. 2006 à 14:18
as-tu regarder cette source ?

Sébastien FERRAND (
blog)
Consultant Indépendant
[Microsoft MVP Visual C#]
3
cs_Bidou Messages postés 5487 Date d'inscription dimanche 4 août 2002 Statut Membre Dernière intervention 20 juin 2013 59
17 oct. 2006 à 13:36
Salut,
Si tu dessines dans le paint, tu n'auras pas ce problème. Et tu n'auras pas non plus besoin d'appeler la méthode CreateGraphics(), tu peux te servir du PaintEventArgs.

-Blog-
0
cs_fcolo Messages postés 201 Date d'inscription mercredi 8 février 2006 Statut Membre Dernière intervention 20 février 2007 2
17 oct. 2006 à 14:00
En fait, je dois dessiner une courbe de point correspondant à un relevé de mesure.
Je passe en paramètre la liste de point, et je les affiche dans la pictureBox.
Donc, d'apres ta methode, il faudrait que dans le paint je dessine tous les points d'une variable globale comportant tous ces points.
J'apelle cette methode par un repaint() sur la pictureBox.

Est ce ce que tu voulais dire?

N'y a t il pas une solution pour fixer le dessin à la pictureBox?

f.colo
0
cs_Bidou Messages postés 5487 Date d'inscription dimanche 4 août 2002 Statut Membre Dernière intervention 20 juin 2013 59
17 oct. 2006 à 14:40
Soit tu dessines sur une image comme te le proposes Seb' et tu assignes l'images au pictureBox, soit tu y vas directe avec l'event Paint comme je te l'ai proposé...
Je ne sais pas lequel est plus performant !?

-Blog-
0

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

Posez votre question
sebmafate Messages postés 4936 Date d'inscription lundi 17 février 2003 Statut Membre Dernière intervention 14 février 2014 38
17 oct. 2006 à 14:50
l'avantage de l'image c'est que tu n'est pas obligé de redessiner les points à chaque appel du Paint.

Sébastien FERRAND (
blog)
Consultant Indépendant
[Microsoft MVP Visual C#]
0
cs_fcolo Messages postés 201 Date d'inscription mercredi 8 février 2006 Statut Membre Dernière intervention 20 février 2007 2
17 oct. 2006 à 15:28
Ok, je passe maintenant pas un bitmap pour faire mes modification et ca fonctionne.
merci.
Voici le nouveau code de tests:

private
void Dessiner(Point p1, Point p2)
{
Bitmap bitmap;
System.Drawing.Pen myPen =
new System.Drawing.Pen(System.Drawing.Color.Red);
myPen.Width=2;
System.Drawing.Brush myBrush =
new System.Drawing.SolidBrush(System.Drawing.Color.Green);

if(pictureBox1.Image !=
null)
bitmap =
new Bitmap(pictureBox1.Image);

else
bitmap =
new Bitmap(
this.pictureBox1.Width,
this.pictureBox1.Height);
Graphics graph = Graphics.FromImage(bitmap);
graph.DrawLine(myPen,p1,p2);
graph.Flush();
graph.Dispose();
pictureBox1.Image = bitmap;
}

f.colo

PS:sebmafate, quel format doit avoir le string pour utiliser le PointConverter.ConvertFromString(String txt) ? j'ai essayé "0;0" comme dans ton fichier texte mais il me fait un FormatException? (j'ai pas cherché plus que ca car je ne l'utilise pas, c'est juste pour info)
0
cs_Bidou Messages postés 5487 Date d'inscription dimanche 4 août 2002 Statut Membre Dernière intervention 20 juin 2013 59
17 oct. 2006 à 18:22
Une virgule, pas un point-virugle : PointConverter

-Blog-
0
cs_fcolo Messages postés 201 Date d'inscription mercredi 8 février 2006 Statut Membre Dernière intervention 20 février 2007 2
17 oct. 2006 à 20:55
j'ai mis un point virgule car dans la source de sebmafe il y en a dans sont fichier .txt mais je le serais maintenant :) merci

f.colo

Aperçu d'un fichier contenu dans un zip

[zipview.aspx?ID=35647&f=TracerImage/TracerImage/points.txt&dl=1 TELECHARGER CE FICHIER]

369;329
369;330
369;331
369;332
369;333
369;334
369;335
369;336
0