dbigand
Messages postés13Date d'inscriptionlundi 28 février 2005StatutMembreDernière intervention26 novembre 2005
-
12 mars 2005 à 16:08
dbigand
Messages postés13Date d'inscriptionlundi 28 février 2005StatutMembreDernière intervention26 novembre 2005
-
15 mars 2005 à 17:44
En VB.Net, avec le code ci-dessous, je pensais afficher "image.bmp" à chaque boucle du code (5 fois).
En fait je n'affiche qu'une seule image, la dernière de la boucle.
Question : Comment afficher l'image à chaque boucle? D'avance Merci !!
Dim i As Integer
for i = 1 to
5
PictureBox1.Image = Image.FromFile("image.bmp")
PictureBox1.
Left = PictureBox1.Left + 20
i = i + 1
next i
valtrase
Messages postés937Date d'inscriptionlundi 19 janvier 2004StatutMembreDernière intervention 9 mai 20224 12 mars 2005 à 17:09
Salut,
Soit tu recré soit tu temporises pour pouvoir l'affichée donc tu intègres un timer dans ta boucle.
Tu veux donner une impression de déplacement ?
dbigand
Messages postés13Date d'inscriptionlundi 28 février 2005StatutMembreDernière intervention26 novembre 2005 12 mars 2005 à 18:50
Merçi pour vos réponses. C'est très rapide !
En fait, je suis un amateur en retraite (un peu averti quand même) qui se lance dans VB.Net.
Je voudrai en fait créer plusieurs images identiques à des positions différentes comme dans un jeu de briques afin de pouvoir les détruire par la suite par une autre image tel qu'une balle par exemple.
J'ai bien compris vos conseils, j'ai essayé le timer mais je n'arrive pas à le faire fonctionner avec le code ci-dessous.
Private Sub MainFormLoad(sender As System.Object, e As System.EventArgs)
Dim i As Integer
'Création des 5 images à des positions différentes
for i = 1 to 5
PictureBox1.Image = Image.FromFile("image.bmp")
PictureBox1.Left = PictureBox1.Left + 20
timerBalle.enabled = true
i = i + 1
next i
timerBalle.enabled = False
End Sub
Private Sub TimerBalleTick(sender As System.Object, e As
System.EventArgs)
'Je pense qu'il faut peut-être se servir de cette procédure mais comment???
End Sub
Encore merçi.
Dbigand
Vous n’avez pas trouvé la réponse que vous recherchez ?
dbigand
Messages postés13Date d'inscriptionlundi 28 février 2005StatutMembreDernière intervention26 novembre 2005 13 mars 2005 à 16:11
Merci pour vos réponses.
En fait je voulez créer "dynamiquement" plusieurs images identiques à des positions différentes...
Comme VB.NET ne supporte pas les "control arrays", j'ai la solution ci-dessous, mai je ne sais pas du tout si c'est optimisé, il doit y avoir beaucoup mieux !!!
Structure BriqueStructure
'index d'une ImageListBrique.
Dim FlagIndex As Integer
'reference une PictureBox pour changer son image
Dim BriqueRef
As PictureBox
End Structure
'Tableau pour référencer par un index les pictureBox
Dim Brique(4)
As BriqueStructure
Dim i
As Integer
Private Sub MainFormLoad(sender As System.Object, e As System.EventArgs)
'On affecte dans le tableau les pictureBox crées niveau design
Brique(0).BriqueRef = pictureBrique0
Brique(1).BriqueRef = pictureBrique1
Brique(2).BriqueRef = pictureBrique2
Brique(3).BriqueRef = pictureBrique3
Brique(4).BriqueRef = pictureBrique4
'On affiche les images contenues dans une ImageListBrique
cs_liquide
Messages postés1016Date d'inscriptionsamedi 22 mars 2003StatutMembreDernière intervention24 juin 2008 13 mars 2005 à 22:01
Salut
en dymanique, essais un code comme celui ci, il fonctionne chez moi
Dim
i As Integer
For i = 0 To 4
Dim p As New Panel
With p
.Parent = Me
.Top = 0
.Left = 30 + (i * 2)
.Height = 100
.Width = 100
.BackColor = Color.AliceBlue
.BorderStyle = BorderStyle.FixedSingle
.Visible = True
End With
Next
je l'ai mis dans un bouton, par ailleur j'ai lu (je ne sais plus ou) que le panel remplacait les picturebox ( on va me dire .. mais alors pourquoi les picturebox existent toujours dans les controles ---> je n'en sais absolument rien).
dbigand
Messages postés13Date d'inscriptionlundi 28 février 2005StatutMembreDernière intervention26 novembre 2005 14 mars 2005 à 12:17
Re -Salut et Re-merçi
Pour ce qui est du dymanique, c'est parfait et celà fonctionne très bien.
Dernière question : (car il ne faut pas abuser des bonnes choses). Je voudrai déplacer ces panels avec l'aide d'un Timer et en jouant par exemple sur ".Left = .Left + 10 (voir code ci-dessous). Mais je n'y arrive pas. Si je met Dim p As NewPanel dans la boucle, je pense que à chaque timer, il créait de nouveaux panels aux mêmes endroits et rien ne bouge.
Le code ci-dessous ne fait bouger que le dernier panel...
Dim p As New Panel
Private Sub TimerBalleTick(sender
As System.
Object, e
As System.EventArgs)
For i = 0
To 4
Me.Controls.Add(
Me.p)
With p
if .Visible =
True
.Parent =
Me
.Top = 30 * I
.
Left = .
Left + 10
.
Height = 30
.
Width = 20
.BackColor = Color.AliceBlue
.BorderStyle = BorderStyle.FixedSingle
.Visible = True
end if
End With
Next
valtrase
Messages postés937Date d'inscriptionlundi 19 janvier 2004StatutMembreDernière intervention 9 mai 20224 14 mars 2005 à 23:09
Salut,
Dans un premier temps tu ne dois pas créer tes Panel dans l'évènement de ton timer car tu crée des¨Panels mais tu ne les drétruit pas; tu vas donc vite te retrouver avec une multitude de panels aux même positions.
Donc je pense que tu dois créer tes panels avant et ensuite tu gères les déplacements à l'aide de ton timer.
Dans la sub du Timer utilises des Variables intermèdiaires que tu déclareras en static elles garderons leurs valeurs à chaque retour dans la sub.
dbigand
Messages postés13Date d'inscriptionlundi 28 février 2005StatutMembreDernière intervention26 novembre 2005 15 mars 2005 à 11:15
Mille Merci à Tous.
C'est exactement ce que je voulais faire!!! Ca marche parfaitement.
J'avoue que sans votre aide, jamais je n'y serai arrivé. En plus j'ai beaucoup appris.
cs_liquide
Messages postés1016Date d'inscriptionsamedi 22 mars 2003StatutMembreDernière intervention24 juin 2008 15 mars 2005 à 11:21
salut, bin tu peux valider si la reponse est accepté , si c'est la mienne biensur ,c'est surtout pour mes chevilles , non je déconne. Content d'avoir pu aider
dbigand
Messages postés13Date d'inscriptionlundi 28 février 2005StatutMembreDernière intervention26 novembre 2005 15 mars 2005 à 17:41
Salut à l'expert "Liquide"
En lisant ta dernière réponse, tu parles de valider ta réponse.
J'ignore comment on fait cette validation. Je n'ai pas vu un "clic" à faire dans ce sens!!!
En réalité c'est la première fois que j'ai fait cette démarche dans le forum.
(qui est en même temps très "top" niveau technique et très "cool", j'ai parcouru quelques discussions!!!)
Si il y a une procédure de validation, dis moi ou je peux la trouver afin de m'exécuter.