Importer et visualiser une image dans picturebox à l'aide d'une variable [Résolu]

Signaler
Messages postés
10
Date d'inscription
vendredi 15 janvier 2021
Statut
Membre
Dernière intervention
6 avril 2021
-
Messages postés
10
Date d'inscription
vendredi 15 janvier 2021
Statut
Membre
Dernière intervention
6 avril 2021
-
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

Messages postés
2429
Date d'inscription
samedi 11 janvier 2014
Statut
Contributeur
Dernière intervention
1 juin 2021
137
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 & .



Messages postés
10
Date d'inscription
vendredi 15 janvier 2021
Statut
Membre
Dernière intervention
6 avril 2021

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
Messages postés
2429
Date d'inscription
samedi 11 janvier 2014
Statut
Contributeur
Dernière intervention
1 juin 2021
137
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 .
Messages postés
10
Date d'inscription
vendredi 15 janvier 2021
Statut
Membre
Dernière intervention
6 avril 2021

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
Messages postés
2429
Date d'inscription
samedi 11 janvier 2014
Statut
Contributeur
Dernière intervention
1 juin 2021
137
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


Messages postés
10
Date d'inscription
vendredi 15 janvier 2021
Statut
Membre
Dernière intervention
6 avril 2021

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
Messages postés
2429
Date d'inscription
samedi 11 janvier 2014
Statut
Contributeur
Dernière intervention
1 juin 2021
137
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 .

Messages postés
206
Date d'inscription
mardi 4 juillet 2017
Statut
Membre
Dernière intervention
13 février 2021
7
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.
Messages postés
10
Date d'inscription
vendredi 15 janvier 2021
Statut
Membre
Dernière intervention
6 avril 2021

Oui ça marche
j'avais occulté au premier message l'importance du & dans le comportement de la variable
Merci de votre aide
Cordialement
LG
Messages postés
10
Date d'inscription
vendredi 15 janvier 2021
Statut
Membre
Dernière intervention
6 avril 2021

merci j'ai pris note