VB.Net PictureBox [Résolu]

Signaler
Messages postés
926
Date d'inscription
vendredi 10 novembre 2000
Statut
Membre
Dernière intervention
10 septembre 2010
-
Messages postés
926
Date d'inscription
vendredi 10 novembre 2000
Statut
Membre
Dernière intervention
10 septembre 2010
-
J'ai déjà fait un Post sur le forum mais je n'ai pas eu de nouvelle.
J'aimerais au moins savoir si c'est réalisable ce que je demande ou bien c'est que j'ai pas de réponse donc c'est impossible de dessiner plus d'une ligne dans un picturebox.

Je veux comprendre quoi fait quoi dans mon code....

Je suis capable de dessiner des croix avec des coordonnées géographiques à partir d'un tableau.
Maintenant, je veux relier des lignes à partir de certain points...
Je suis capable de dessiner seulement une ligne...
Mais je suis obliger d'utiliser cette ligne de code pour que ca fonctionne.
objGraphics.Clear(Color.White).

Si je mets cette ligne en commentaire, lorsque je dessine une ligne, mon picturebox devient noir. Et la couleur de fond, de mon picturebox. est blanche.

Je suis incapable de dessiner plus d'une ligne....
Il existe une solution à mon problème...

Merci de votre aide

Private
Sub cmdTracer_Click(
ByVal sender
As System.Object,
ByVal e
As System.EventArgs)
Handles cmdTracer.Click

Dim i
As
Integer
Dim CoordY1
As
Double, CoordX1
As
Double, CoordY2
As
Double, CoordX2
As
Double..............

Dim objBitMap
As
New Bitmap(X_initial, Y_initial)
objGraphics = Graphics.FromImage(objBitMap)
objGraphics.Clear(Color.White)

For i = 0
To UBound(Tableau)
LigneSplit = Tableau(i).Split(Separateur)
CoordXPicturebox = (Convert.ToDouble(LigneSplit(2)) - ValMinX) * (X_initial / (ValMaxX - ValMinX))
CoordYPicturebox = Y_initial - (Convert.ToDouble(LigneSplit(1)) - ValMinY) * (Y_initial / (ValMaxY - ValMinY))

objGraphics.DrawLine(MyPen, CoordXPicturebox, CoordYPicturebox - 2, CoordXPicturebox, CoordYPicturebox + 2)
objGraphics.DrawLine(MyPen, CoordXPicturebox - 2, CoordYPicturebox, CoordXPicturebox + 2, CoordYPicturebox)

Next iobjGraphics.DrawLine(MyPen, CoordX1, CoordY1, CoordX2, CoordY2)

Me.PictureBox1.Image = objBitMap
objGraphics.Dispose()
objGraphics =
Nothing
End
If

End
Sub

16 réponses

Messages postés
3172
Date d'inscription
dimanche 15 février 2004
Statut
Membre
Dernière intervention
9 avril 2017
33
Salut,

Déclare un graphics en global, crée une bitmap dans ta picturebox, et prends le graphics depuis cette bitmap

Dans le load de ta form :
TaPictureBox.Image = New System.Drawing.Bitmap(TaPictureBox.Width, TaPictureBox.Height)
TaPictureBox_Graphics = System.Drawing.Graphics.FromImage(TaPictureBox.Image)

Puis, dés que tu veut dessiner quelque chose sur ta picturebox :
TaPictureBox_Graphics.DrawLine(...)
TaPictureBox_Graphics.DrawLine(...)
TaPictureBox.Invalidate()

__________
Kenji
(
Nouveau forum VBA/Office
Messages postés
3172
Date d'inscription
dimanche 15 février 2004
Statut
Membre
Dernière intervention
9 avril 2017
33
Ceci tout simplement :
Private TaPictureBox_Graphics As System.Drawing.Graphics

Crée l'image dans ta picurebox :
TaPictureBox.Image = New System.Drawing.Bitmap(TaPictureBox.Width, TaPictureBox.Height)

Prendre le graphics depuis cette image :
TaPictureBox_Graphics = System.Drawing.Graphics.FromImage(TaPictureBox.Image)

__________
Kenji
(
Nouveau forum VBA/Office
Messages postés
3172
Date d'inscription
dimanche 15 février 2004
Statut
Membre
Dernière intervention
9 avril 2017
33
Non, il faut mettre
PictureBox1.Image = New System.Drawing.Bitmap(PictureBox1.Width, PictureBox1.Height)
PictureBox1_Graphics = System.Drawing.Graphics.FromImage(PictureBox1.Image)
Dans à l'initialisation. (load de la form par exemple)

__________
Kenji
(
Nouveau forum VBA/Office
Messages postés
3172
Date d'inscription
dimanche 15 février 2004
Statut
Membre
Dernière intervention
9 avril 2017
33
Voila, c'est tout a fait normal, tu décharge l'image.
Met en commentaire cette ligne (ligne 91)
Me.PictureBox1.Image = objBitMap

Mais il faudras aussi tracer tes (+) dans le Picturebox1_Graphics

__________
Kenji
(
Nouveau forum VBA/Office
Messages postés
926
Date d'inscription
vendredi 10 novembre 2000
Statut
Membre
Dernière intervention
10 septembre 2010
3
Salut et merci pour ta réponse...

Bon, je suis débutant en .Net et certain terme me sont inconnus.

Peux-tu me montrer un exemple de code svp??:
Déclare un graphics en global, crée une bitmap dans ta picturebox, et prends le graphics depuis cette bitmap

Évidemment j'ai un erraur dans ton code (pour le moment) dans ma Form_Load
PictureBox1.Image =

New System.Drawing.Bitmap(PictureBox1.Width, PictureBox1.Height)
PictureBox1_Graphics = System.Drawing.Graphics.FromImage(PictureBox1.Image)
J'ai un erreur là où s'est souligné:
Bref comment je peux déclarer un graphic en global.

Merci de ton aide

Name 'PictureBox1_Graphics' is not declared
Messages postés
926
Date d'inscription
vendredi 10 novembre 2000
Statut
Membre
Dernière intervention
10 septembre 2010
3
ok j'ai pris ton code avec quelque modification j'ai mis 
Public TaPictureBox_Graphics As System.Drawing.Graphics

et quand j'appuis sur un bouton pour faire dessiner ma ligne
j'ai mis ce code....

Recherche des coordonnées des points.... Je t'épargne le code...
PictureBox1.Image =

New
System.Drawing.Bitmap(PictureBox1.Width, PictureBox1.Height)
PictureBox1_Graphics = System.Drawing.Graphics.FromImage(PictureBox1.Image)
PictureBox1_Graphics.DrawLine(MyPen, CoordX1, CoordY1, CoordX2, CoordY2)

Résultat: J'ai un PictureBox tout noir.

Merci encore pour ton aide
très apprécié
Messages postés
926
Date d'inscription
vendredi 10 novembre 2000
Statut
Membre
Dernière intervention
10 septembre 2010
3
Salut, c'est encore moi...

J'ai tout fais ce que tu me dit et maintenant, il y a plus rien qui se dessine...

Je te montre ce que j'ai fais.....

P.S. Lorsque je veux dessiner mes lignes, mes variables CoordX1, CoordX2, CoordY1 et CoordY2
 ont tous une valeur et il s sont tous des variables Double.

Bref vois-tu où je fais un erreur ???

Merci encore de ton aide...
Dans ma Form_Load j'ai mis:
PictureBox1.Image =

New System.Drawing.Bitmap(PictureBox1.Width, PictureBox1.Height)
PictureBox1_Graphics = System.Drawing.Graphics.FromImage(PictureBox1.Image)

J'ai déclaré cette variable

Public

Picturebox1_Graphics
As System.Drawing.Graphics

Et j'ai mis ce code pour dessiner mes lignes lorsque j'appuis sur un bouton

Picturebox1_Graphics.DrawLine(MyPen, CoordX1, CoordY1, CoordX2, CoordY2)
PictureBox1.Invalidate()
Messages postés
3172
Date d'inscription
dimanche 15 février 2004
Statut
Membre
Dernière intervention
9 avril 2017
33
Quelle version de vb.net utilise-tu ?
Tout devrai marcher normalement (vu que ca fonctionne chez moi, y'as pas de raisons)

__________
Kenji
(
Nouveau forum VBA/Office
Messages postés
926
Date d'inscription
vendredi 10 novembre 2000
Statut
Membre
Dernière intervention
10 septembre 2010
3
J'ai la version 8.0.50727.762
Je suis en Compact Framework mais j'ai aucun message d'erreur donc ca devrait fonctionner ???

Hummmm.... Veux-tu que je t'envois mon code pour que tu jette un coup d'oeil ????
Messages postés
3172
Date d'inscription
dimanche 15 février 2004
Statut
Membre
Dernière intervention
9 avril 2017
33
Ca vient peut-être du compact framework
Essaye ca dans un autre projet :

Private Picturebox1_Graphics As System.Drawing.Graphics



Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
  PictureBox1.Image = New System.Drawing.Bitmap(PictureBox1.Width, PictureBox1.Height)
  Picturebox1_Graphics = System.Drawing.Graphics.FromImage(PictureBox1.Image)
End Sub



Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
  Picturebox1_Graphics.DrawLine(System.Drawing.Pens.Red, 0, 0, PictureBox1.Width, PictureBox1.Height)
  PictureBox1.Invalidate()
End Sub




__________
Kenji

(


Nouveau forum VBA/Office
Messages postés
926
Date d'inscription
vendredi 10 novembre 2000
Statut
Membre
Dernière intervention
10 septembre 2010
3
ok je l'ai refais sans le Compact Framework et ca fonctionne pas....

Je peux t'envoyer ce code et que tu jette un coup d'oeil... Cette partie du code est un élément important et j'aimerais vraiment que ca fonctionne....

J'attends de tes nouvelles...

Merci d'avance....

P.S. le code que je pourrais t'envoyer n'est pas en Compact Framework

merci
Messages postés
3172
Date d'inscription
dimanche 15 février 2004
Statut
Membre
Dernière intervention
9 avril 2017
33
Tu as essayer juste avec le minimum ?
Je t'envois mon email par mp mais il faut que ton code soit un résumer et non toute ton application (comme le code que je t'ai proposé précédemment). Sinon, je pourrais pas regarder.

__________
Kenji
(
Nouveau forum VBA/Office
Messages postés
926
Date d'inscription
vendredi 10 novembre 2000
Statut
Membre
Dernière intervention
10 septembre 2010
3
c'est la version minimum....   et bien j'ai mis aussi le code pour faire dessiner les points et un fichier texte....

Le fichier texte contient les coordonnées des points qui sont mis dans un tableau et ensuite dessiner....

Bref c'est la version réduite....

merci de ton aide
Messages postés
926
Date d'inscription
vendredi 10 novembre 2000
Statut
Membre
Dernière intervention
10 septembre 2010
3
Merci de ton aide

C'est vraiment tres apprécié

bye
Messages postés
926
Date d'inscription
vendredi 10 novembre 2000
Statut
Membre
Dernière intervention
10 septembre 2010
3
Salut c'est encore moi....


J'aimerais savoir...


Dans le code que je t'ai envoyé "corrigé"....

Je l'essais avec le compact framework et mon picturebox devient toujours noir complètement...

Je prend une chance sais-tu pourquoi, cette ligne de code, en compact framework ca fonctionne pas....
Picturebox1_Graphics.Clear(Color.White)

Merci de ton aide...
Messages postés
926
Date d'inscription
vendredi 10 novembre 2000
Statut
Membre
Dernière intervention
10 septembre 2010
3
oublie ca.. j'ai trouvé....

merci