Dessin dans picturebox disparait au passage d'une fenetre [Résolu]

Messages postés
201
Date d'inscription
mercredi 8 février 2006
Statut
Membre
Dernière intervention
20 février 2007
- - Dernière réponse : 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
Afficher la suite 

8 réponses

Meilleure réponse
Messages postés
4936
Date d'inscription
lundi 17 février 2003
Statut
Modérateur
Dernière intervention
14 février 2014
32
3
Merci
as-tu regarder cette source ?

Sébastien FERRAND (
blog)
Consultant Indépendant
[Microsoft MVP Visual C#]

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 210 internautes nous ont dit merci ce mois-ci

Commenter la réponse de sebmafate
Messages postés
5507
Date d'inscription
dimanche 4 août 2002
Statut
Modérateur
Dernière intervention
20 juin 2013
42
0
Merci
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-
Commenter la réponse de cs_Bidou
Messages postés
201
Date d'inscription
mercredi 8 février 2006
Statut
Membre
Dernière intervention
20 février 2007
1
0
Merci
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
Commenter la réponse de cs_fcolo
Messages postés
5507
Date d'inscription
dimanche 4 août 2002
Statut
Modérateur
Dernière intervention
20 juin 2013
42
0
Merci
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-
Commenter la réponse de cs_Bidou
Messages postés
4936
Date d'inscription
lundi 17 février 2003
Statut
Modérateur
Dernière intervention
14 février 2014
32
0
Merci
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#]
Commenter la réponse de sebmafate
Messages postés
201
Date d'inscription
mercredi 8 février 2006
Statut
Membre
Dernière intervention
20 février 2007
1
0
Merci
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)
Commenter la réponse de cs_fcolo
Messages postés
5507
Date d'inscription
dimanche 4 août 2002
Statut
Modérateur
Dernière intervention
20 juin 2013
42
0
Merci
Une virgule, pas un point-virugle : PointConverter

-Blog-
Commenter la réponse de cs_Bidou
Messages postés
201
Date d'inscription
mercredi 8 février 2006
Statut
Membre
Dernière intervention
20 février 2007
1
0
Merci
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
Commenter la réponse de cs_fcolo