Importer et visualiser une image dans picturebox à l'aide d'une variable

Résolu
loic_0406 Messages postés 10 Date d'inscription vendredi 15 janvier 2021 Statut Membre Dernière intervention 6 avril 2021 - Modifié le 15 janv. 2021 à 21:28
loic_0406 Messages postés 10 Date d'inscription vendredi 15 janvier 2021 Statut Membre Dernière intervention 6 avril 2021 - 18 janv. 2021 à 12:58
Bonjour,
Je désire afficher des images jpg dans des picturebox à partir de la lecture d'un fichier.txt qui contient le nom de ces images. A chaque lancement les images changent.
Je ne suis pas un spécialiste de vb6 et bute sur 2 problèmes.
1er Pour s'afficher les images doivent être dans la racine de C (voir programme joint)
2ième plus embêtant loadPicture ne reconnait pas le contenu de la variable.
Il y a t il une solution ou bien est ce impossible avec VB6?

Merci pour votre réponse

Cordialement
LG

Private Sub Form_Load()
Dim T1 As String
 Dim T(1 To 40) As String
Open "F:\Mes_sites_Web\tarots\nord.txt" For Input As #1

Line Input #1, texte
tout = texte
Text1.Text = tout
Close #1
i = 1
While i < 36
a = Mid(tout, i, 2)
T(i) = a

i = i + 2
Wend
 
memo.Text = T(1) & T(3) & T(5) & T(7) & T(9) & T(11) & T(13) & T(15) & T(17) & T(19) & T(21) & T(23) & T(25) & T(27) & T(29) & T(31) & T(33) & T(35)

T1 = T(1) & ".jpg"
MsgBox (T1)                                    'Pour vérification
'TaPictureBox.Picture = LoadPicture("F:\Mes_sites_Web\tarots\54.jpg")   NE FONCTIONNE 
                                                                                                                                                       PAS
'TaPictureBox.Picture = LoadPicture("C:\T1")                                   NE FONCTIONNE PAS
TaPictureBox.Picture = LoadPicture("C:\54.jpg")                                 ' FONCTIONNE

TimerMove.Enabled = False
  TimerMove.Interval = 1
  PicMove.BorderStyle = 0
  Set Img = TaPictureBox.Picture
   Set PicMove.Picture = Img
  TaPictureBox.AutoRedraw = True
  PicMove.Width = Img.Width
  PicMove.Height = Img.Height
End Sub

9 réponses

vb95 Messages postés 3472 Date d'inscription samedi 11 janvier 2014 Statut Contributeur Dernière intervention 13 avril 2024 169
Modifié le 15 janv. 2021 à 18:44
Bonjour
Tout d'abord pour poster du code prière de suivre ce tuto : https://codes-sources.commentcamarche.net/faq/11288-les-balises-de-code .
ton code sera bien plus agréable à lire .
Peux-tu nous mettre une copie de ce que contient le fichier suivant F:\Mes_sites_Web\tarots\nord.txt ( si celui-ci ne contient pas des données confidentielles évidemment ) . Ceci pour confirmer si la suite de mon raisonnement qui suit est correct .
A mon avis ce fichier contient les noms de fichiers de tes fichiers image et non l'endroit où ceux-ci sont stockés .
Maintenant tu nous dit que tes fichiers sont chargés à la racine de la partition C:\ . Si par exemple la variable T1 contient
"54.jpg"
la commande
TaPictureBox.Picture = LoadPicture("C:\" & T1")
devrait fonctionner .
C:\ contient le répertoire où se trouve les fichiers et T1, T2, etc..... contiennent les noms de fichiers . Le & entre les deux sert à faire la concaténation ( ou la mise bout à bout ) des 2 éléments de chaque côté de l'opérateur & .



0
loic_0406 Messages postés 10 Date d'inscription vendredi 15 janvier 2021 Statut Membre Dernière intervention 6 avril 2021
15 janv. 2021 à 20:09
Bonsoir,
le texte du fichier contient le nom sous la forme de chiffres des images:
540918107162475052453967707546651526
54 est lié à un 3 de cœur, 09 d'atout etc...
Ces images ne sont pas prévues pour être dans la racine. Mais je constate que ça ne marche que si elles sont dans la racine. Dans le cas contraire j'ai un message d'erreur comme quoi le chemin est introuvable.
Je suis bien d'accord avec vous si T1 contient 54.jpg ça devrait fonctionner. Ce n'est pas le cas et je ne comprend pas pourquoi. C'est la raison du Mgbox pour m'en assurer.
Les images sont dans le même dossier que le fichier texte .
Merci de vous intéresser à mon problème.
Cordialement
LG
0
vb95 Messages postés 3472 Date d'inscription samedi 11 janvier 2014 Statut Contributeur Dernière intervention 13 avril 2024 169
15 janv. 2021 à 21:11
Bonsoir
Oublions le projet que vous êtes en train de coder et intéressons-nous à ces fichiers image .
Où sont stockés ces fameux fichiers image ? Car même sans ouvrir le projet et sans l'exécuter ces fichiers doivent exister . Maintenant je ne vois nullement une raison valable de vous enquiquiner à faire un fichier .text avec le numéros de ces fichiers image .
répondez à cette question et on verra déjà beaucoup plus clair .
Visual Basic 6 est capable de rechercher dans un répertoire tous les fichiers image , d'en créer une liste et de les afficher ensuite sans aucun souci .
0
loic_0406 Messages postés 10 Date d'inscription vendredi 15 janvier 2021 Statut Membre Dernière intervention 6 avril 2021
16 janv. 2021 à 09:49
Bonjour
Le fichier d'images est dans le même répertoire que le projet VB6 et le fichier texte.
: dossier tarots
Avec T1=54.jpg
'TaPictureBox.Picture = LoadPicture("F:\Mes_sites_Web\tarots\T1") ne fonctionnent pas
'TaPictureBox.Picture = LoadPicture("54.jpg") ne fonctionnent pas
TaPictureBox.Picture = LoadPicture("T1") ne fonctionnent pas
TaPictureBox.Picture = LoadPicture("C:\54.jpg") fonctionne si je place cette image dans C.
'TaPictureBox.Picture = LoadPicture("C:\T1") ne fonctionnent pas

Le dossier tarots comportent 78 images numérotées de 1 à 78.jpg et je dois en afficher aléatoirement 18 seulement. L'objet de ce fichier est de sélectionner les 18 images à afficher. Le problème ne me semble pas là.
Merci de votre intérêt à mon problème
0

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

Posez votre question
vb95 Messages postés 3472 Date d'inscription samedi 11 janvier 2014 Statut Contributeur Dernière intervention 13 avril 2024 169
Modifié le 16 janv. 2021 à 10:39
donc tes images sont dans F:\Mes_sites_Web\tarots\
Ok
TaPictureBox.Picture = LoadPicture("F:\Mes_sites_Web\tarots\T1") 
ne fonctionne pas ce qui est tout à fait normal . Il n'y a aucun fichier qui s'appelle T1 .
T1 est une variable qui contient le nom de ton fichier avec l'extension . Regarde mon message n° 1 et dans l'instruction remplace le répertoire "C:\" par le répertoire qui contient tes fichiers image


0
loic_0406 Messages postés 10 Date d'inscription vendredi 15 janvier 2021 Statut Membre Dernière intervention 6 avril 2021
16 janv. 2021 à 16:04
Bonsoir
Si je comprends bien l'instruction load.picture n'accepte que des adresses en dur.
Elle ne reconnait pas le contenu d'une variable comme T1.texte. Elle reconnait T1 mais son contenu 45.jpg par exemple.
Donc si je veux affecter une image aléatoire dans une picturebox je suis conduit à faire une succession de if else associées chacun à une picture box dédiée à un fichier spécifique.
Comme

if T1= 45.jpg then
PictureBox.Picture = LoadPicture("F:\Mes_sites_Web\tarots\45.jpg")
else
if T1= 46.jpg then
PictureBox.Picture = LoadPicture("F:\Mes_sites_Web\tarots\46.jpg")

etc...

78 if par picturebox et 18 picturebox C'est lourd comme procédure: VB6 n'est peut être pas le logiciel le mieux adapté pour afficher et bouger des images non figées dans le dur

Merci de votre aide
Cordialement
LG
0
vb95 Messages postés 3472 Date d'inscription samedi 11 janvier 2014 Statut Contributeur Dernière intervention 13 avril 2024 169
Modifié le 16 janv. 2021 à 16:19
Regardez la différence entre
LoadPicture("F:\Mes_sites_Web\tarots\45.jpg")


LoadPicture("F:\Mes_sites_Web\tarots\" & T1)
où T1 vaut "45.jpg"

Dans le second cas le nom complet du fichier est précisé par son répertoire et par la variable T1 .
La variable T1 comprend le nom et l'extension du fichier .
Le nom complet d'un fichier comprend :
- un répertoire --> F:\Mes_sites_Web\tarots\
- le nom du fichier --> 45
- l'extension du fichier --> jpg
Entre le nom et l'extension on y met un point .
Pour l'opérateur & son rôle a été expliqué à mon premier message ;
Si vous n'arrivez pas à comprendre ceci je ne puis rien pour vous .

0
JeuDuTaquin Messages postés 249 Date d'inscription mardi 4 juillet 2017 Statut Membre Dernière intervention 31 mai 2023 7
Modifié le 18 janv. 2021 à 00:58
Salut,

N'oubliez pas la fonction ChDir ("c:\") qui change le chemin d'accès par défaut (app.path) par le chemin de son choix.

Donc au début on a ChDir (app.path) et pour toi ChDir ("F:\Mes_sites_Web\tarots\")

Cela évite de répéter le chemin à chaque fois.
LoadPicture( T1)
=
LoadPicture("F:\Mes_sites_Web\tarots\" & T1)

Si les images sont dans le répertoire de l'exécutable :
LoadPicture( app.path & T1)
et
LoadPicture("F:\Mes_sites_Web\tarots\images\" & T1)
= LoadPicture( app.path & "\images\" & T1)
Pour un répertoire "images" dans ton application.

Amuse -toi bien.
0
loic_0406 Messages postés 10 Date d'inscription vendredi 15 janvier 2021 Statut Membre Dernière intervention 6 avril 2021
16 janv. 2021 à 18:06
Oui ça marche
j'avais occulté au premier message l'importance du & dans le comportement de la variable
Merci de votre aide
Cordialement
LG
0
loic_0406 Messages postés 10 Date d'inscription vendredi 15 janvier 2021 Statut Membre Dernière intervention 6 avril 2021
18 janv. 2021 à 12:58
merci j'ai pris note
0
Rejoignez-nous