PictureBox et *.bmp

Résolu
dheroux Messages postés 52 Date d'inscription vendredi 20 octobre 2006 Statut Membre Dernière intervention 11 juin 2014 - 5 déc. 2006 à 17:04
jmfmarques Messages postés 7666 Date d'inscription samedi 5 novembre 2005 Statut Membre Dernière intervention 22 août 2014 - 7 déc. 2006 à 08:02
Bonjour,
Dans un PictureBox j'ai affiché un code-barre qui a été calculé et dessiné ( et non chargé à partir d'une image)
Je voudrais que ce PictureBox soit converti en image BMP
Je ne trouve pas la solution pour arriver à ce résultat.
Merci pour vos réponses
Didier HEROUX

14 réponses

jmfmarques Messages postés 7666 Date d'inscription samedi 5 novembre 2005 Statut Membre Dernière intervention 22 août 2014 27
7 déc. 2006 à 08:02
J'ai une question, moi, bien que je ne sois pas un utilisateur de VB.Net

Un codebarre est pour moi un texte écrit dans une police de caractères. Et c'est cette police, que l'on crée, pas un dessin à chaque fois.

Tout le reste est à partir de là somple : on écrit sur la pictureBox en se référant à cette Police.
3
mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 18
5 déc. 2006 à 17:53
Salut,

il faut utiliser l'instruction SavePicture :

Private Sub Picture1_Click()
    SavePicture Me.Picture1, "C:\documents
and settings\mortalino\bureau\test.bmp"
End Sub


~ <small>[code.aspx?ID=39466 Mortalino]</small>
~

@++

<hr size="2" width="100%" />
  --Mortalino--
Le mystérieux chevalier, "Provençal, le Gaulois"
<!--
0
dheroux Messages postés 52 Date d'inscription vendredi 20 octobre 2006 Statut Membre Dernière intervention 11 juin 2014
5 déc. 2006 à 19:10
Merci d'avoir répondu, mais cela ne fonctionne pas.
J'ai oublié de dire que je travaille sous VB5 Express
SavePicture n'est pas reconnu !
Didier HEROUX
0
nbaduraux Messages postés 24 Date d'inscription jeudi 31 mars 2005 Statut Membre Dernière intervention 15 septembre 2017
5 déc. 2006 à 19:56
Essayes :
PictureBox1.Image.Save("C:\test.bmp", System.Drawing.Imaging.ImageFormat.Bmp)
0

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

Posez votre question
cs_casy Messages postés 7741 Date d'inscription mercredi 1 septembre 2004 Statut Membre Dernière intervention 24 septembre 2014 40
5 déc. 2006 à 20:55
"...sous VB5 Express..."   NON

VB5 Express n'existe pas. Sous tu travaille sous VB5 soit tu es sous VB2005 Express

On va garder la seconde solution.

---- Sevyc64  (alias Casy) ----<hr size="2" width="100%" /># LE PARTAGE EST NOTRE FORCE #
0
dheroux Messages postés 52 Date d'inscription vendredi 20 octobre 2006 Statut Membre Dernière intervention 11 juin 2014
5 déc. 2006 à 21:53
Merci à nbaduraux, mais ....
Si j'implante la ligne (en VB2005)
PictureBox1.Image.Save("C:\test.bmp", System.Drawing.Imaging.ImageFormat.Bmp)

alors j'ai le message d'erreur:
"La référence d'objet n'est pas définie à une instance d'un objet."   ??????

Didier HEROUX
0
mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 18
6 déc. 2006 à 04:13
Je fais pas de DotNet mais regarde du côté du nom de ta PictureBox :
PictureBox1.Image.Save...

(à remplacer par le bon nom)

@++

<hr size="2" width="100%" />
  --Mortalino--
Le mystérieux chevalier, "Provençal, le Gaulois"
<!--
0
nbaduraux Messages postés 24 Date d'inscription jeudi 31 mars 2005 Statut Membre Dernière intervention 15 septembre 2017
6 déc. 2006 à 09:39
Tu dis : "Dans un PictureBox j'ai affiché un code-barre qui a été calculé et dessiné ( et non chargé à partir d'une image)"
Est-ce la propriété Image de ton PictureBox qui n'est pas instancié ? Comment remplis-tu ton PictureBox ? Il faut peut-être commencer par là ...
0
dheroux Messages postés 52 Date d'inscription vendredi 20 octobre 2006 Statut Membre Dernière intervention 11 juin 2014
6 déc. 2006 à 11:50
Merci du suivi de ma demande.

Private





Sub

ToolStripLabel1_Click(


ByVal

sender


As

System.Object,


ByVal

e


As

System.EventArgs)


Handles

ToolStripLabel1.Click


PictureBox2.Image.Save(





"C:\test.bmp"

, System.Drawing.Imaging.ImageFormat.Bmp)
end sub

Lors du click sur le boutton pour éxécuter la routine ci-dessus, j'obtiens le message : "La référence d'objet n'est pas définie à une instance d'un objet."
Mais comment instancié la propriété image si le problème est là ?

Merci
Didier HEROUX
0
nbaduraux Messages postés 24 Date d'inscription jeudi 31 mars 2005 Statut Membre Dernière intervention 15 septembre 2017
6 déc. 2006 à 12:32
Ma question était : quelle méthode utilises-tu pour afficher ton code-barre dans le picturebox ? Au chargement, avant son utilisation !
0
dheroux Messages postés 52 Date d'inscription vendredi 20 octobre 2006 Statut Membre Dernière intervention 11 juin 2014
6 déc. 2006 à 13:51
Ci-dessous le code qui affiche l'image du code-barres dans le PictureBox2

--------------------------------------------------------------------------------------
Sub




echellereduite(


ByVal

abscisseX,


ByVal

ordonneeY,


ByVal

valeur)



Dim

h


As

Graphics = PictureBox2.CreateGraphics



Dim

code2


As





String

= code.Text



Dim

i, hauteur


As





Integer


abscisseX =





50

: ordonneeY =


25








If

code.Text =


""





Then





Exit





Sub








For

i =


0





To

CodeBinaire.Length -


1








If

CodeBinaire.Substring(i,


1

) =


"1"





Then








If

i =


0





Or

i =


2





Or

i =


46





Or

i =


48





Or

i =


92





Or

i =


94





Then

hauteur =


60

+ valeur *


2





Else

hauteur =


55

+ valeur *


2


abscisseX +=





1


h.DrawLine(Pens.Black, abscisseX, ordonneeY, abscisseX, hauteur)








Else


abscisseX +=





1


h.DrawLine(Pens.White, abscisseX, ordonneeY, abscisseX, hauteur)








End





If








Next


PictureBox2.Image.Save(





"c:\codebarre.bmp"

)    '.................... VOICI LA LIGNE DE MON PROBLEME POUR ENREGISTRER L'IMAGE DU CODE-BARRES

end sub

Didier HEROUX
0
dheroux Messages postés 52 Date d'inscription vendredi 20 octobre 2006 Statut Membre Dernière intervention 11 juin 2014
6 déc. 2006 à 14:06
Voici la procédure qui affiche le code-barres dans le PictureBox2:

Sub

echellereduite(


ByVal

abscisseX,


ByVal

ordonneeY,


ByVal

valeur)



Dim

h


As

Graphics = PictureBox2.CreateGraphics



Dim

code2


As





String

= code.Text



Dim

i, hauteur


As





Integer


abscisseX =


50

: ordonneeY =


25



If

code.Text =


""





Then





Exit





Sub



For

i =


0





To

CodeBinaire.Length -


1



If

CodeBinaire.Substring(i,


1

) =


"1"





Then



If

i =


0





Or

i =


2





Or

i =


46





Or

i =


48





Or

i =


92





Or

i =


94





Then

hauteur =


60

+ valeur *


2





Else

hauteur =


55

+ valeur *


2


abscisseX +=


1


h.DrawLine(Pens.Black, abscisseX, ordonneeY, abscisseX, hauteur)



Else


abscisseX +=


1


h.DrawLine(Pens.White, abscisseX, ordonneeY, abscisseX, hauteur)



End





If



Next


PictureBox2.Image.Save(





"c:\codebarre.bmp"

)         la ligne qui me pose problème
Merci

Didier HEROUX
0
nbaduraux Messages postés 24 Date d'inscription jeudi 31 mars 2005 Statut Membre Dernière intervention 15 septembre 2017
6 déc. 2006 à 16:10
Voilà qui m'a donné du fil à retordre mais j'ai fini par trouver !!

Le principe est d'instancier d'abord l'image du picturebox en créant une image vide, de récupérer l'objet Graphics de l'image (et non du picturebox directement). Tu dessines ton code barre ensuite comme tu veux et tu disposes de l'objet image pour l'enregistrement dans un fichier bmp.

Voila ce que ça donne :

'création de 'instance de l'image du picturebox
PictureBox2.Image = New System.Drawing.Bitmap(PictureBox2.Width, PictureBox2.Height)
'extraction du Graphics de l'image (et non directement du picturebox !)
Dim h As System.Drawing.Graphics = System.Drawing.Graphics.FromImage(PictureBox2.Image)
'couleur de fond de l'image (sinon c noir !!)
h.Clear(System.Drawing.Color.White)



'Dessin du code-barre ...

h.DrawLine(System.Drawing.Pens.Black, 10, 10, 100, 100)



'Enregistrement de l'image

PictureBox2.Image.Save("c:\codebarre.bmp", System.Drawing.Imaging.ImageFormat.Bmp)

Et merci pour ton casse-tête ;-))
0
dheroux Messages postés 52 Date d'inscription vendredi 20 octobre 2006 Statut Membre Dernière intervention 11 juin 2014
6 déc. 2006 à 17:06
Un grand merci pour ce travail !
J'ai bien compris la méthode à adopter.
Bonne soirée.

Didier HEROUX
0
Rejoignez-nous