Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

cmt faire défiler des images N puis N+1

14 réponses
Avatar
latouffe59
Bonjour,
Je voulais savoir comment on pouvais faire un programme de ce genre:
--------------------------------------------
'Quand on clic sur une commande alors l'imageN est remplac=E9 par
l'image N+1 qui sont contenue dans un m=EAme dossier

Public sub commande_click
N =3D N+1 'sachant que on declare precedement que n=3D1
Picture1.Picture =3D LoadPicture("\chemin\pictureN.jpg")
End Sub
--------------------------------------------

De plus, mon programme modifie le contraste, je voudrais que toutes
les deux images on incr=E9mente la valeur du contraste...mais comment
indiquer dans "commande_click" ce changement toutes les 2
utilisations?

Je cherchais un comparateur If n=3D pair then contraste =3D contraste+5
masi je vois pas comment lui faire d=E9terminer si N est pair ou impair

10 réponses

1 2
Avatar
LE TROLL
Bonjour,

Alors je ne suis pas un spécialiste des images en rang, je crois
d'ailleurs qu'il y a un objet afin de ranger les images.

Pour compter tes images, tout dépend si ce sont toujours les mêmes
images et si ta première image ainsi que le défilement est toujours le même.

Il faudrait donc que tu en dises un peu plus.

Sinon un des principe, tu met un compteur c à 0 dans le load, dès qu'une
image est affichée (voir propriétés de l'image),
ben tu fais c=c+1
decimal = c modulo 2
if decimal = 0 then 'pair
....
en dif

Mais la encore, este à savoir si on peut défiler dans les deux sens,
précises stp?

--
Merci beaucoup, au revoir et à bientôt :o)
------
Romans, logiciels, email, site personnel
http://irolog.free.fr/joe.htm
------------------------------------------------------------------------------------
a écrit dans le message de news:

Bonjour,
Je voulais savoir comment on pouvais faire un programme de ce genre:
--------------------------------------------
'Quand on clic sur une commande alors l'imageN est remplacé par
l'image N+1 qui sont contenue dans un même dossier

Public sub commande_click
N = N+1 'sachant que on declare precedement que n=1
Picture1.Picture = LoadPicture("cheminpictureN.jpg")
End Sub
--------------------------------------------

De plus, mon programme modifie le contraste, je voudrais que toutes
les deux images on incrémente la valeur du contraste...mais comment
indiquer dans "commande_click" ce changement toutes les 2
utilisations?

Je cherchais un comparateur If n= pair then contraste = contraste+5
masi je vois pas comment lui faire déterminer si N est pair ou impair
Avatar
François Picalausa
Hello,

réponse inline

On 3 mai, 12:51, wrote:
Bonjour,
Je voulais savoir comment on pouvais faire un programme de ce genre:
--------------------------------------------
'Quand on clic sur une commande alors l'imageN est remplacé par
l'image N+1 qui sont contenue dans un même dossier

Public sub commande_click
N = N+1 'sachant que on declare precedement que n=1
Picture1.Picture = LoadPicture("cheminpictureN.jpg")
End Sub
--------------------------------------------



Il s'agit ici d'une simple concaténation, réalisée avec l'opérateur de
concaténation & :
http://msdn2.microsoft.com/en-us/library/aa242763(VS.60).aspx

Set Picture1.Picture = LoadPicture("chemin de base" & index)

L'index sera stoqué, par exemple, dans une variable statique du sub,
ou privée de la classe contenante.

De plus, mon programme modifie le contraste, je voudrais que toutes
les deux images on incrémente la valeur du contraste...mais comment
indiquer dans "commande_click" ce changement toutes les 2
utilisations?

Je cherchais un comparateur If n= pair then contraste = contraste+5
masi je vois pas comment lui faire déterminer si N est pair ou impair



Une méthode classique est de déterminer le reste d'une division par 2:
if ((a mod 2) = 0) Then
'pair
end if

Une autre méthode, est de tester le premier bit (en binaire donc le
bit de poid le plus faible - 2^0 = 1 ou 0 - indique directement la
parité)
if ((a And 1) = 0) Then
'pair
end if

Il est aussi possible de se servir d'un simple booléen permettant de
savoir si le changement a été réalisé l'étape précédente
Private Sub Test()
Static Odd As Boolean

If Odd Then
'Impair
End If

Odd = Not Odd
End Sub
Evidement, lorsqu'une variable de comptage (ici ton N) est déjà
présente, dupliquer l'information n'est pas nécessaire.

François
Avatar
latouffe59
Pour tester la parité je vais faire avec mod ca sera bien suffisant
pour mon niveau et mon code



Il s'agit ici d'une simple concaténation, réalisée avec l'opérate ur de
concaténation & :http://msdn2.microsoft.com/en-us/library/aa242763(VS.6 0).aspx

Set Picture1.Picture = LoadPicture("chemin de base" & index)

L'index sera stoqué, par exemple, dans une variable statique du sub,
ou privée de la classe contenante.



Euh donc si j'ai une liste dans "c:Image" du type
picture1
picture2
picture3
......
Il faut que je fasse
---------------------------------------------------------------
' à placer avant " Dim index As long " et " Dim parité As long " et
"index = 0"

Public sub command_click

index = index+1
Picture1.Picture = LoadPicture("c:Imagepicture" & index)

parité= index mod 2

If parité=1 then contraste= contraste+5 ' comme cela à la
prochaine image

l'incrémentation est prise en compte
End sub
------------------------------------------------------------------


petites questions >>> "0 mod 2" donnera bien "0" ou alors il y aura
une erreur?
>>> Pourquoi met tu un "Set"? à quoi sert
il?



Mais la encore, reste à savoir si on peut défiler dans les deux sens,
précises stp?



ben il me suffirait de faire index= index -1 ;) mais je ne sais pas
si je vais le faire
Avatar
latouffe59
bon ben j'ai fais un code masi il ne focntionne pas comme il faut!
En fait il me met l'image Z où Z intervient dans n= n +Z
je ne comprend pas l'erreur :

voici mon code:
---------------------------------
Public Sub Form_Click()
Picture1.Picture = LoadPicture("C:Documents and Settingsefv21

BureauProjetImagespicture1.bmp")
End Sub

Private Sub Command1_Click()

Dim R As Long
Dim parité As Long

Picture1.Picture = LoadPicture("")

R = R + 2
Picture1.Picture = LoadPicture("C:Documents and Settings
efv21

BureauProjetImagespicture" & R & ".bmp")

parité = R Mod 2
If parité = 1 Then
Beep
Beep
End If

End Sub

Private Sub Form_Click()
Picture1.Picture = LoadPicture("C:Documents and Settingsefv21Bureau
ProjetImagespicture1.bmp")

End Sub


Public Sub Form_Load()
End Sub


Private Sub Picture1_Click()
End Sub
-----------------------------------------------

merci d'avance
Avatar
latouffe59
OUPS j'ai decouvert mon erreur en relisant mon post!
il faut mettre "Dim R As Integer" dasn le general et non dasn la
fonction commande ......

Merci bien pour votre aide .......

il me reste maintenant à essayer de combiner ce code avec celui de
mon changement de contraste, de créer ma 30aine d'images et puis
d'aller boire une chti'te bière qui sera bien méritée

Cordialement
latouffe59
Avatar
LE TROLL
Merci MON CHIEN !!!


Profite bien de la réponse du gnome car il vient généralement 1 minutes
et 29 secondes juste après la messe le dimanche, là comme j'ai râlé que ça
ne branlait rien, ça l'a réveillé, il vient une minute deux fois par
semaine, si t'as une autre question t'attendras dimanche maintenant, juste
après la messe, c'est là qu'il vient :o)


--
Merci beaucoup, au revoir et à bientôt :o)
------
Romans, logiciels, email, site personnel
http://irolog.free.fr/joe.htm
------------------------------------------------------------------------------------


a écrit dans le message de news:

OUPS j'ai decouvert mon erreur en relisant mon post!
il faut mettre "Dim R As Integer" dasn le general et non dasn la
fonction commande ......

Merci bien pour votre aide .......

il me reste maintenant à essayer de combiner ce code avec celui de
mon changement de contraste, de créer ma 30aine d'images et puis
d'aller boire une chti'te bière qui sera bien méritée

Cordialement
latouffe59
Avatar
Jean-marc
wrote:
OUPS j'ai decouvert mon erreur en relisant mon post!
il faut mettre "Dim R As Integer" dasn le general et non dasn la
fonction commande ......



Non ça ne marchera pas.
Premièrement ton r est incrémenté de 2 en 2, tu liras donc une image sur 2.
D'autre part comme tu augmentes de 2 en 2, ta variable parité aura toujours
la même valeur.

Il faut:
- une variable pour passer d'image en image
- une AUTRE variable pour le contraste

Ca donne:

Option Explicit

' le nombre max de l'index d'image dans ton répertoire
Private Const MAX_INDEX As Long = 10 ' je mets 10 par exemple

Private Sub Command1_Click()
Static idx_image As Long
Static contraste As Long
Dim image_name As String

' incrémente le compteur d'image
idx_image = idx_image + 1

' attention à ne pas dépasser l'index max pour le
' nom du dernier fichier !!

' sinon il faudra faire un truc du genre
If idx_image > MAX_INDEX Then
' restaure valeur départ
idx_image = 1
End If

' calcul le nom du fichier
image_name = "Imagespicture" & Trim$(Str$(idx_image)) & ".bmp"

' affecte la propriété picture, AVEC SET !
Set Picture1.Picture = LoadPicture(image_name)

' toutes les images, augmente le contraste d'une valeur de 2
If (idx_image Mod 2) = 0 Then
contraste = contraste + 2
End If

' note: je ne fais aps ce que tu fais avec contraste, il faut
' peut être la déclarer ailleurs.

End Sub

les déclarations en "static" permettent aux variables de garder leurs
valeurs d'un appel à l'autre de la fonction.
Une autre solution (moins jolie, pas recommandée) est de sortir
les variables en question de la procédure (du coup la variable
devient "globale"), mais c'est une mauvaise idée : les variables
globales sont toujours une mauvaise idée sauf quand on ne peut pas
faire autrement.

Bonne suite :-)

--
Jean-marc Noury (jean_marc_n2)
Microsoft MVP - Visual Basic
mailto: remove '_no_spam_' ;
FAQ VB: http://faq.vb.free.fr/
Avatar
François Picalausa
On 3 mai, 14:29, wrote:
petites questions "0 mod 2" donnera bien "0" ou alors il y aura
une erreur?



juste pour information mod, l'opérateur modulo est défini dans la
documentation de VB:
http://msdn2.microsoft.com/en-us/library/" target="_blank" class="text-blue hover:opacity-90 " style="word-break: break-all;" rel="noopener nofollow">http://msdn2.microsoft.com/en-us/library/aa242823" target="_blank" class="text-blue hover:opacity-90 " style="word-break: break-all;" rel="noopener nofollow">http://msdn2.microsoft.com/en-us/library/" target="_blank" class="text-blue hover:opacity-90 " style="word-break: break-all;" rel="noopener nofollow">http://msdn2.microsoft.com/en-us/library/aa242823(VS.60).aspx
Et effectivement, ce modulo est défini tel que "0 mod 2" vaut 0 (0/2 =
0, reste 0)
Naturellement, l'inverse (2 mod 0) générera une erreur de division par
zéro

Pourquoi met tu un "Set"? à quoi sert-il?



L'instruction Set (http://msdn2.microsoft.com/en-us/library/" target="_blank" class="text-blue hover:opacity-90 " style="word-break: break-all;" rel="noopener nofollow">http://msdn2.microsoft.com/en-us/library/
aa266283(VS.60).aspx) permet d'affecter un objet à une variable de
type objet, par opposition à Let (http://msdn2.microsoft.com/en-us/
library/aa243390(VS.60).aspx), généralement omis, permettant
l'affectation aux types natifs tels que Boolean, Long, ... et UDT
(user defined types). Certains objets (comme l'objet Picture)
permettent d'utiliser Let pour réaliser l'affectation. Néanmoins, par
soucis de cohérence, j'emploie généralement Set même dans ce cas.

Pour le reste, merci du retour!

François Picalausa
Avatar
LE TROLL
Eh le nain morveux, je suis presque mort de rire, tu t'es fait remonter les
bretelles parce que tu n'en branlais pas une et que tu venais le dimanche
après la messe, juste 1 minutes et 27 secondes pour tirer ta frime, comme ça
se fait que t'es là aujourd'hui, tu es malade ???

Enfin tu fais ton boulot, ben c'est pas trop tôt, heureusement qu'il y a des
mecs comme moi, qui osent pousser leur geulante, sinon avec les mouton
t'avais trouvé le filon hein, tu n'en foutais pas une, ben tu l'as ans l'os,
va faloir étaler ta science, oh, n'ai pas peur, ils vont vite t'oublier, tu
pourras repartir dans toin jardin, où est la place d'un nain de jardin et
d'un cafard qui m'a balancé à Jody, t'a un tronche de blance poils de
carottes!
Avatar
Gilles MOUGNOZ
Bonjour,
Et tu te demandes encore pourquoi tu ne reçois pas de réponses ?!...
A moins que tu ne cherches désespérement la polémique, ce qui, pour un troll
prénommé Attila, serait relativement logique, après tout...
Il ne t'est pas venu à l'idée que François, qui est MSP (Microsoft Student
Partner), avait sûrement des choses plus importantes à faire en cette fin
d'année universitaire que de fureter sur les forums ?
Que cela ne t'empêches pas de poser tes questions mais essaie d'y ajouter la
forme, la prochaine fois ;-)
--
"LE TROLL" a écrit :
Eh le nain morveux, je suis presque mort de rire, tu t'es fait remonter
les bretelles parce que tu n'en branlais pas une et que tu venais le
dimanche après la messe, juste 1 minutes et 27 secondes pour tirer ta
frime, comme ça se fait que t'es là aujourd'hui, tu es malade ???

Enfin tu fais ton boulot, ben c'est pas trop tôt, heureusement qu'il y a
des mecs comme moi, qui osent pousser leur geulante, sinon avec les mouton
t'avais trouvé le filon hein, tu n'en foutais pas une, ben tu l'as ans
l'os, va faloir étaler ta science, oh, n'ai pas peur, ils vont vite
t'oublier, tu pourras repartir dans toin jardin, où est la place d'un nain
de jardin et d'un cafard qui m'a balancé à Jody, t'a un tronche de blance
poils de carottes!


1 2