PictureBox en VB.net [Résolu]

cs_Seb33300 84 Messages postés mardi 20 septembre 2005Date d'inscription 7 février 2010 Dernière intervention - 2 avril 2006 à 19:46 - Dernière réponse :  LAYLO1010
- 27 janv. 2009 à 12:15
Bonjour,

Je voudrais placer sur une PictureBox plusieurs images à partir de fichiers images
Pour chacune d'elles je doit pouvoir dire si elle doit se placer au premier plan ou au dernier plan et à quelle position sur le picturebox (x,y en pixel)

Pour le moment j'utilise :

Dim image As System.Drawing.Image
image = System.Drawing.Bitmap.FromFile(lstCards().SelectedItem)

Mais si j'ajoute une deuxieme image de la meme facon, l'image remplace la premiere.

Quelqu'un pourrai m'aider ?

Merci
Afficher la suite 

24 réponses

Meilleure réponse
Charles Racaud 3181 Messages postés dimanche 15 février 2004Date d'inscription 9 avril 2017 Dernière intervention - 2 avril 2006 à 20:28
3
Merci
Bonsoir,

On récupére l'image de ta picturebox, on dessine une nouvelle image par dessus est on redéfini la final comme nouvelle
Ca donne une petite fonction:

Private Sub AddImageToPicture(ByVal Img As System.Drawing.Image, ByVal Location As System.Drawing.Point)
Dim FinalImg As System.Drawing.Image = New System.Drawing.Bitmap(Me.PictureBox1.Width, Me.PictureBox1.Height)
Dim Graphics As System.Drawing.Graphics = System.Drawing.Graphics.FromImage(FinalImg)
If Me.PictureBox1.Image IsNot Nothing Then
Graphics.DrawImage(Me.PictureBox1.Image, System.Drawing.Point.Empty)
End If
Graphics.DrawImage(Img, Location)
Me.PictureBox1.Image = FinalImg
End Sub

Example d'utilisation:

Call AddImageToPicture(Image.FromFile(
"Chemin/de/ton/Image01"), New System.Drawing.Point(10, 10))

Call AddImageToPicture(Image.FromFile(
"Chemin/de/ton/Image02"), New System.Drawing.Point(40, 20))

Call AddImageToPicture(Image.FromFile(
"Chemin/de/ton/Image03"), New System.Drawing.Point(30, 30))

[...]

Kenji

<HR width="100%" SIZE=2>


Merci de cliquer sur "Réponse acceptée" si une réponse vous convient.

Merci Charles Racaud 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 119 internautes ce mois-ci

Meilleure réponse
Charles Racaud 3181 Messages postés dimanche 15 février 2004Date d'inscription 9 avril 2017 Dernière intervention - 2 avril 2006 à 22:44
3
Merci
Même principe:

Tu peux dessiner un peut n'importe quoi sur ta picture (Image, Text,Formes ...)

Private Sub AddTextToPicture(ByVal Text As String, ByVal Location As System.Drawing.Point, ByVal Brush As System.Drawing.Brush, ByVal Font As System.Drawing.Font)
Dim FinalImg As System.Drawing.Image = New System.Drawing.Bitmap(Me.PictureBox1.Width, Me.PictureBox1.Height)
Dim Graphics As System.Drawing.Graphics = System.Drawing.Graphics.FromImage(FinalImg)
If Not Me.PictureBox1.Image Is Nothing Then
Graphics.DrawImage(Me.PictureBox1.Image, System.Drawing.Point.Empty)
End If
Graphics.DrawString(Text, Font, Brush, Location)
Me.PictureBox1.Image = FinalImg
End Sub

Et n'oublie pas les "réponses acceptées"

Kenji

<HR width="100%" SIZE=2>


Merci de cliquer sur "Réponse acceptée" si une réponse vous convient.

Merci Charles Racaud 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 119 internautes ce mois-ci

cs_Seb33300 84 Messages postés mardi 20 septembre 2005Date d'inscription 7 février 2010 Dernière intervention - 2 avril 2006 à 19:47
0
Merci
lstCards().SelectedItem contient le chemain vers mon fichier image
cs_Seb33300 84 Messages postés mardi 20 septembre 2005Date d'inscription 7 février 2010 Dernière intervention - 2 avril 2006 à 20:40
0
Merci
Il ne me prend pas la ligne :

If Me.PictureBox1.Image IsNot Nothing Then

C'est le IsNot qui coince: Une valeur de type ... ne peut etre convertie en Booleen
Charles Racaud 3181 Messages postés dimanche 15 février 2004Date d'inscription 9 avril 2017 Dernière intervention - 2 avril 2006 à 21:15
0
Merci
Pour vs2003:
If Not Me.PictureBox1.Image Is Nothing Then

Kenji

<HR width="100%" SIZE=2>


Merci de cliquer sur "Réponse acceptée" si une réponse vous convient.
cs_Seb33300 84 Messages postés mardi 20 septembre 2005Date d'inscription 7 février 2010 Dernière intervention - 2 avril 2006 à 22:19
0
Merci
Merci sa marche !!

Et tu peux me dire comment mettre du texte à un endroit precis ? (avec les coordonnées)
en choisissant sa police, et sa forme (gras, souligné, ...)

merci encore !
cs_Seb33300 84 Messages postés mardi 20 septembre 2005Date d'inscription 7 février 2010 Dernière intervention - 2 avril 2006 à 22:56
0
Merci
ok mais comment on met en paramettre un truc de type
System.Drawing.Font

-_-'
Charles Racaud 3181 Messages postés dimanche 15 février 2004Date d'inscription 9 avril 2017 Dernière intervention - 2 avril 2006 à 23:12
0
Merci
Par example:
Dim TonFont As New System.Drawing.Font("Tahoma", 8, FontStyle.Bold Or FontStyle.Underline)

Kenji

<HR width="100%" SIZE=2>


Merci de cliquer sur "Réponse acceptée" si une réponse vous convient.
cs_Seb33300 84 Messages postés mardi 20 septembre 2005Date d'inscription 7 février 2010 Dernière intervention - 2 avril 2006 à 23:28
0
Merci
Désolé mais c'est quoi le Brush ?

Il me dit qu'il ne doit pas etre null
Charles Racaud 3181 Messages postés dimanche 15 février 2004Date d'inscription 9 avril 2017 Dernière intervention - 2 avril 2006 à 23:31
0
Merci
C'est pour la couleur:
Ex:
Dim TaBrush As System.Drawing.Brush = New System.Drawing.SolidBrush(System.Drawing.Color.Red)

Kenji

<HR width="100%" SIZE=2>


Merci de cliquer sur "Réponse acceptée" si une réponse vous convient.
cs_Seb33300 84 Messages postés mardi 20 septembre 2005Date d'inscription 7 février 2010 Dernière intervention - 3 avril 2006 à 08:47
0
Merci
Derniere chose :

Tu sais si il existe un moyen de placer un texte modifiable dans la picturebox ?
Charles Racaud 3181 Messages postés dimanche 15 février 2004Date d'inscription 9 avril 2017 Dernière intervention - 3 avril 2006 à 11:28
0
Merci
La, il faut placer des contrôles textbox sur la picture:

Private TextBoxList As System.Collections.ArrayList
Private Sub AddTextBoxToPicture(ByVal Bounds As System.Drawing.Rectangle)
If TextBoxList Is Nothing Then TextBoxList = New System.Collections.ArrayList()
Dim TxtBox As New System.Windows.Forms.TextBox()
TxtBox.Bounds = Bounds
Me.PictureBox1.Controls.Add(TxtBox)
TextBoxList.Add(TxtBox)
End Sub

Kenji

<HR width="100%" SIZE=2>


Merci de cliquer sur "Réponse acceptée" si une réponse vous convient.
cs_Seb33300 84 Messages postés mardi 20 septembre 2005Date d'inscription 7 février 2010 Dernière intervention - 3 avril 2006 à 18:08
0
Merci
Sa marche comment les bounds ? -_-'
Charles Racaud 3181 Messages postés dimanche 15 février 2004Date d'inscription 9 avril 2017 Dernière intervention - 3 avril 2006 à 23:58
0
Merci
Dim TonRect as New System.Drawing.Rectangle(PositonX, PositionY, Largeur, Hauteur)

Kenji

<HR width="100%" SIZE=2>


Merci de cliquer sur "Réponse acceptée" si une réponse vous convient.
cs_Seb33300 84 Messages postés mardi 20 septembre 2005Date d'inscription 7 février 2010 Dernière intervention - 4 avril 2006 à 18:53
0
Merci
Cela ne marche pas car le texte n'est pas "dans" l'image

losrque j'essai d'enregistrr l'image le texte n'aparai pas
cs_Seb33300 84 Messages postés mardi 20 septembre 2005Date d'inscription 7 février 2010 Dernière intervention - 4 avril 2006 à 19:03
0
Merci
j'ai trouvé une autre solution c'est bon merci encore !
Charles Racaud 3181 Messages postés dimanche 15 février 2004Date d'inscription 9 avril 2017 Dernière intervention - 4 avril 2006 à 19:33
0
Merci
Je poste quand même. Ca peut-être utile.
Avec la fonction précédente pour les TextBox:

Private TextBoxList As System.Collections.ArrayList
Private Sub AddTextBoxToPicture(ByVal Bounds As System.Drawing.Rectangle)
If TextBoxList Is Nothing Then TextBoxList = New System.Collections.ArrayList()
Dim TxtBox As New System.Windows.Forms.TextBox()
TxtBox.Bounds = Bounds
Me.PictureBox1.Controls.Add(TxtBox)
TextBoxList.Add(TxtBox)
End Sub

Private Function GetBitmap() As System.Drawing.Image
If Not Me.PictureBox1.Image Is Nothing Then
Dim Img As System.Drawing.Image = Me.PictureBox1.Image
Dim Graphics As System.Drawing.Graphics = System.Drawing.Graphics.FromImage(Img)
For Each TxtBox As System.Windows.Forms.TextBox In TextBoxList
Dim TxtImage As New System.Drawing.Bitmap(TxtBox.Width, TxtBox.Height)
TxtBox.DrawToBitmap(TxtImage, TxtBox.ClientRectangle)
Graphics.DrawImage(TxtImage, TxtBox.Location)
Next
Return Img
End If
Return Nothing
End Function

Kenji

<HR width="100%" SIZE=2>


Merci de cliquer sur "Réponse acceptée" si une réponse vous convient.
cs_Seb33300 84 Messages postés mardi 20 septembre 2005Date d'inscription 7 février 2010 Dernière intervention - 5 avril 2006 à 19:17
0
Merci
Salut c'est encore moi

Peut etre pourra tu me renseigner :

Quand j'ajoute une image au format .png avec ta fonction AddImageToPicture
celle ci s'ajoute correctement par contre si j'ajoute de la transparence sur les contours de cette image et que j'utilise la fonction la taille de l'image que j'ajoute s'agrandi

Par contre si je la convertie au format gif, il n'y a pas de probleme

Est ce un bug avec le format png ?
Charles Racaud 3181 Messages postés dimanche 15 février 2004Date d'inscription 9 avril 2017 Dernière intervention - 5 avril 2006 à 19:52
0
Merci
Effectivement, même problême
Oui, le pb vient peut-être du format png.
Sinon, ca sa marche, la même fonction avec en plus la taille final de l'image

Private Sub AddImageToPicture(ByVal Img As System.Drawing.Image, ByVal Location As System.Drawing.Point, ByVal Size As System.Drawing.Size)
Dim FinalImg As System.Drawing.Image = New System.Drawing.Bitmap(Me.PictureBox1.Width, Me.PictureBox1.Height)
Dim Graphics As System.Drawing.Graphics = System.Drawing.Graphics.FromImage(FinalImg)
If Me.PictureBox1.Image IsNot Nothing Then
Graphics.DrawImage(Me.PictureBox1.Image, System.Drawing.Point.Empty)
End If
Graphics.DrawImage(Img, New System.Drawing.Rectangle(Location, Size))
Me.PictureBox1.Image = FinalImg
End Sub

Kenji

<HR width="100%" SIZE=2>


Merci de cliquer sur "Réponse acceptée" si une réponse vous convient.
cs_Seb33300 84 Messages postés mardi 20 septembre 2005Date d'inscription 7 février 2010 Dernière intervention - 9 avril 2006 à 12:22
0
Merci
Salut

tu saurais me dire comment effacer le contenu d'un picture box ?
Mettre tt en blanc par exemple

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.

PictureBox en VB.net - page 2