Créer des picturbox a l infini [Résolu]

Signaler
Messages postés
517
Date d'inscription
mercredi 22 décembre 2010
Statut
Membre
Dernière intervention
25 septembre 2016
-
Messages postés
517
Date d'inscription
mercredi 22 décembre 2010
Statut
Membre
Dernière intervention
25 septembre 2016
-
Bonjour,
Je fait un petit jeu et pour le fond je voudras faire un truc modulable en 64 images le pb c est que je ne vais pas m amuser a créer une variable et un picturebox a chaque foi

N y aurais il pas un moyen de faire une procédure qui créer un picturbox a chaque foi que je l appel ?
Merci.

11 réponses

Messages postés
4242
Date d'inscription
samedi 8 septembre 2007
Statut
Membre
Dernière intervention
29 août 2018
16
Oy !

Tu peux avoir par exemple :

 
        public addPictureBox(Point location)
        {
            PictureBox m_pic
            m_pic = new PictureBox();
            m_pic.Location = location;
            form1.Controls.Add(m_pic);
         }


dans le code de ta forme (form1 étant le nom de ta form).

Plus d'info sur "Point" :
http://msdn.microsoft.com/fr-fr/library/system.drawing.point.aspx


naga
Messages postés
517
Date d'inscription
mercredi 22 décembre 2010
Statut
Membre
Dernière intervention
25 septembre 2016
2
salut je me suis tromper de section je suis en vb.net mais globalement c'est une procédure comme ca que j'utilise
mais elle ne me permet que d'en créer un...
Messages postés
14482
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
14 juillet 2020
420
Bonjour, sujet déplacé vers VB
Messages postés
378
Date d'inscription
samedi 22 septembre 2012
Statut
Membre
Dernière intervention
13 août 2017
13
Bonjour dj naoki.
Le petit programme qui suit,

Public Class Accueil
    Private WithEvents pBox As New PictureBox

    Private Sub Accueil_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
        pBox.BackColor = Color.Black
        Me.Controls.Add(pBox)
    End Sub

End Class

pourra peut-être vous être utile.

Cordialement.
Salut,

Il est préférable de dessiner sur un bitmap unique (voir Graphics sur msdn) plutôt que de charger 64 picturebox (solution lourde et très coûteuse en ressources).

Ah et un grand bonjour à Zermelo...
Messages postés
378
Date d'inscription
samedi 22 septembre 2012
Statut
Membre
Dernière intervention
13 août 2017
13
banana32, je te fais mes amitiés.
Messages postés
517
Date d'inscription
mercredi 22 décembre 2010
Statut
Membre
Dernière intervention
25 septembre 2016
2
salut et dsl pour le temps sans raiponce la j'arrive a décliner mais cela décline toujours au même endroit
Private Sub PictureBox1_Paint(sender As System.Object, e As System.Windows.Forms.PaintEventArgs) Handles PictureBox1.Paint
Dim pnj As Bitmap = My.Resources.dirt__2_
e.Graphics.DrawImage(pnj,C ursor.Position.X,C ursor.Position.Y)
'On purge les objets temporaires
pnj.Dispose()
End Sub

c'est a dire que les images ce mettent toutes a la même position
Messages postés
6831
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
10 juillet 2020
109
Bonjour,

Tu peux mettre tes PictureBox dans un Panel comme ceci:

Ajouter un Button et un Panel

Voici le code dans les balises:

 Dim pic As PictureBox
Dim x, y, diff, dify, i As Int32


Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
pic = New PictureBox()
i += 1
pic.BorderStyle = BorderStyle.Fixed3D
pic.SizeMode = PictureBoxSizeMode.StretchImage
pic.Image = My.Resources.dirt__2_
pic.SetBounds(x, y, 100, 100)
x += 100
'vérifier s'il ya suffisamment d'espace dans l'axe x pour ajouter une image
If x >= Panel1.Width Or (x + 100) > Panel1.Width Then
diff = Panel1.Width - x
'S'il n'y a pas assez d'espace, commencer une nouvelle ligne ci-dessous
y += 100
x = 0
End If
If ((y + 100) > Panel1.Height) Then
dify = Panel1.Height - y
End If
'ajouter une image
Panel1.Controls.Add(pic)
End Sub


Et le code sans les balises pour ceux qui comme moi lise le code dans les balises sur une seule ligne. Cela n'a toujours pas été réglé, c'est très pénalisant!!!!!

Dim pic As PictureBox
Dim x, y, diff, dify, i As Int32


Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
pic = New PictureBox()
i += 1
pic.BorderStyle = BorderStyle.Fixed3D
pic.SizeMode = PictureBoxSizeMode.StretchImage
pic.Image = My.Resources.dirt__2_
pic.SetBounds(x, y, 100, 100)
x += 100
'vérifier s'il ya suffisamment d'espace dans l'axe x pour ajouter une image
If x >= Panel1.Width Or (x + 100) > Panel1.Width Then
diff = Panel1.Width - x
'S'il n'y a pas assez d'espace, commencer une nouvelle ligne ci-dessous
y += 100
x = 0
End If
If ((y + 100) > Panel1.Height) Then
dify = Panel1.Height - y
End If
'ajouter une image
Panel1.Controls.Add(pic)
End Sub

Pour plus de détail voir mon dernier programme :
Planche contact en VB.Net
Messages postés
3258
Date d'inscription
jeudi 26 novembre 2009
Statut
Membre
Dernière intervention
3 décembre 2019
49
si les images servent seulement de fond tu peux
essayer ainsi

 Private Structure imagedata
Public thebitmap As Bitmap
Public coords As Point
End Structure

Private listimage As New List(Of imagedata)

'on va remplir listimage avec les images de la resources
' pour faciliter la tache j'ai nommé toutes les images avec le meme
'nom et suffixe 1 2 3 ex im1 im2 im3

Private Sub LoadImage()
Dim imagedt As imagedata
Dim filename As String
Dim x,y As Integer
filename = "im"
x = 10
y = 20
For iter As Integer = 1 To 4
imagedt.thebitmap = CType(My.Resources.ResourceManager.GetObject(filename & iter.ToString), Bitmap)
imagedt.coords = New Point(x, y)
x += imagedt.thebitmap.Width + 6
listimage.Add(imagedt)
Next

End Sub

Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
LoadImage()

end sub

Private Sub Form1_Paint(ByVal sender As Object, ByVal e As System.Windows.Forms.PaintEventArgs) Handles Me.Paint
For Each item As imagedata In listimage
e.Graphics.DrawImage(item.thebitmap, item.coords)
Next
End Sub
Utilisateur anonyme
Salut cs_ShayW,

C'est aussi comme ça que je m'y serais pris. Mais j'aurais utilisé une classe plutôt que ta structure. Les structures sont des 'dinosaures' hérités de vb6 (bouhhh).
Messages postés
3258
Date d'inscription
jeudi 26 novembre 2009
Statut
Membre
Dernière intervention
3 décembre 2019
49
Salut banana32

après avoir lu

http://stackoverflow.com/questions/3898443/vb-net-is-using-structures-considered-nasty



Private Class imagedata
Public thebitmap As Bitmap
Public coords As Point
End Class

Private listimage As New List(Of imagedata)

'on va remplir listimage avec les images de la resources
' pour faciliter la tache j'ai nommé toutes les images avec le meme
'nom et suffixe 1 2 3 ex im1 im2 im3

Private Sub LoadImage()
Dim filename As String
Dim x As Integer
filename = "save"
x = 10
For iter As Integer = 1 To 4
Dim imagedt As New imagedata
imagedt.thebitmap = CType(My.Resources.ResourceManager.GetObject(filename & iter.ToString), Bitmap)
imagedt.coords = New Point(x, 10)
x += imagedt.thebitmap.Width + 6
listimage.Add(imagedt)
Next

End Sub

Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
LoadImage()

end sub

Private Sub Form1_Paint(ByVal sender As Object, ByVal e As System.Windows.Forms.PaintEventArgs) Handles Me.Paint
For Each item As imagedata In listimage
e.Graphics.DrawImage(item.thebitmap, item.coords)
Next
End Sub
Utilisateur anonyme
Tu peux simplifier ton code en incluant un constructeur qui accepte des paramètres (ceci est un exemple) :
Private Class imagedata
Public thebitmap As Bitmap
Public coords As Point
sub new(file as string, pt as point)
thebitmap = CType(My.Resources.ResourceManager.GetObject(file), Bitmap)
coords = pt
end sub
End Class


listimage.add(New imagedata(filename & iter.tostring, new point(x, 10)))
Messages postés
517
Date d'inscription
mercredi 22 décembre 2010
Statut
Membre
Dernière intervention
25 septembre 2016
2
en faite il me faudrait un code qui me permette de créer des images et de les déplacer en suite comme je veux et que ce soit infini aussi

merci
Messages postés
3258
Date d'inscription
jeudi 26 novembre 2009
Statut
Membre
Dernière intervention
3 décembre 2019
49
Tu n'es pas au restaurant
mais dans un forum avec des volontaires et ce genre de demande
et la façon de s'exprimer oblige à te dire
bon courage débrouille toi tout seul on te répondra quand tu
formuleras ta question concernant un problème précis et spécifique correspondant au règle du forum
Messages postés
517
Date d'inscription
mercredi 22 décembre 2010
Statut
Membre
Dernière intervention
25 septembre 2016
2
Désolé c'est vrais que c'était un peut exagérer de ma par (j'ai poster ce message en 10 seconde a pêne et je n'ai pas fait attention)

en faite ce que je voulais dire que j'ai laisser tomber cette idée de Picturebox en faite la je n'en n'ai qu'un et je décline déçu ma question c'est comment je peut faire pour créer des dessin a l'infini et comment je peut faire pour garder le contrôle déçu (déplacer un dessin en particulier ou le supprimer gérer sa position ect....)
merci a tous et a toutes
et encore désolé

Ta nouvelle question n'a plus rien a voir avec le titre. Clôture cette discussion et ouvre un nouveau sujet.
Bonne prog.
Messages postés
517
Date d'inscription
mercredi 22 décembre 2010
Statut
Membre
Dernière intervention
25 septembre 2016
2
ok merci :)