Ce dernier exercice de la section
Graphiques vous apprendra comment faire défiler de façon
continue une image dans une zone plus petite qu'elle. Pour
réaliser ce travail, vous aurez besoin de l'image Fantastique.jpg
que vous devez télécharger de la façon habituelle.
- Créez d'abord un nouveau projet
que vous sauvegardez sous le nom Ex_5xx.vbp.
- Attribuez à la feuille un nom
respectant les règles apprises précédemment. Inscrivez
Défilement dans la propriété CAPTION.
- Ajoutez un premier contrôle
Zone d'image ( PictureBox) sur la feuille. Voici
quelques propriétés que vous devez changer: NAME
= Im_Grande, HEIGHT = 9120, WIDTH =
6735, PICTURE = Fantastique.jpg, VISIBLE =
False. Placez cette image du côté droit de la scène.
- Ajoutez un second contrôle Zone
d'image (PictureBox) dont les propriétés
suivantes auront été changées: NAME = Im_Petite,
HEIGHT = 1935, WIDTH = 2055. Placez-le dans
le coin supérieur gauche.
- Placez ensuite un contrôle Barre
de défilement vertical (VScrollbar) à droite de
la petite zone d'image. Nommez-la Dv_Droite. Sa
propriété HEIGHTt doit être réglée à 1935,
comme la zone. Il ne doit pas se trouver au-dessus
de la grande image.
- Continuez avec une Barre de
défilement horizontal (HScrollbar) en dessous de
la petite zone d'image. Nommez-la Dh_Dessous. Ici, c'est
la propriété WIDTH qu'il faut régler à 2055.
Voici à quoi devrait ressembler votre feuille à ce
stade-ci.

-
Ajoutez d'abord la
procédure Dessine_IM_Petite() comme ci-dessous.
Notez que les propriétés SCALDEWIDTH et SCALEHEIGTH
qui renvoient les mesures horizontales et verticales d'un
objet sont utilisées
Private Sub
Dessine_IM_Petite()
'Effectue la mise à jour de la petite zone
Im_Petite.PaintPicture Im_Grande.Picture, 0, 0,
Im_Petite.ScaleWidth, _
Im_Petite.ScaleHeight,
Dh_Dessous.Value, Dv_Droite.Value, _
Im_Petite.ScaleWidth, Im_Petite.ScaleHeight, _
vbSrcCopy 'Copie
de la section source de la grande image
End Sub
-
Double-cliquez sur
la barre de défilement Dv_Droite et complétez la
procédure comme ci-dessous.
Private Sub Dv_Droite_Change()
'Réaction au changement d'état de Dv_Droite
Dessine_IM_Petite
End Sub
-
Ajoutez une
procédure Dv_Droite_Scroll identique à celle qui suit.
Private Sub Dv_Droite_Scroll()
'Appel de la procédure Dv_Droite_Change
Dv_Droite_Change
End Sub
-
Il faut effectuer
les mêmes opérations avec Dh_Dessous. Les procédures
seront dentiques à celles-ci.
Private Sub Dh_Dessous_Change()
'Réaction au changement de Dh_Dessous
Dessine_IM_Petite
End Sub
Private Sub Dh_Dessous_Scroll()
'Appel de la procédure Dh_Dessous_Change
Dh_Dessous_Change
End Sub
-
Il ne reste plus
qu'à initialiser les propriétés dans la procédure de
chargement de la feuille comme ci-dessous.
Private Sub Form_Load()
'Initialisation des
limites de Dh_Dessous
Dh_Dessous.Max = IM_Grande.ScaleWidth - IM_Petite.ScaleWidth
Dh_Dessous.LargeChange = Dh_Dessous.Max \ 10
Dh_Dessous.SmallChange =Dh_Dessous.Max \ 25
'Initialisation des
limites de Dv_Droite
Dv_Droite.Max = IM_Grande.ScaleHeight - IM_Petite.ScaleHeight
Dv_Droite.LargeChange = Dv_Droite.Max \ 10
Dv_Droite.SmallChange = Dv_Droite.Max \ 25
End Sub
-
Pour terminer,
réglez les dimensions de la feuille comme suit: HEIGHT
= 3200, WIDTH = 2900. Enregistrez le tout et
expérimentez le résultat de votre travail.
Application:
- À votre tour de jouer. Trouvez
une image de grande dimension et faites-la défiler dans
une zone plus petite. Enregistrez votre travail sous le nom Ex_5bxx.vbp.
|