Graphiques
 
- Dégradé
- Animations BitBlt
- Animations Pic
- Contrôle Animation
- Défilement d'image
 
Interface
 
- Barre d'outils
- Barre de progression
- Clignotement
- Interface MDI
- Barre d'état
 
Texte & système
 
- Texte sur image
- Taille variable
- Informations système
 
Fichiers
 
- Grand fichier
- Choix de police
- Dictionnaire Word
- Listes
- Fichiers binaires
 
Souris et touches
 
- Curseur animé
- Touches
 

Animation BitBlt
Ce second exercice vous apprendra comment réaliser l'animation d'un objet de forme complexe sur un arrière-plan avec rapidité. Il fait appel à la fonction API BitBlt Commencez par télécharger les fichiers suivants dont vous aurez besoin pour votre réalisation: Paysage.bmp, Vaisseau.bmp, Vaisseau_masque.bmp. Remaquez que dans l'image qui sera déplacée, la section transparente est en noir alors que, dans le masque, cette même section est blanche: ce sont les couleurs qui  sont remplacées par le noir.
  1. Commencez par lancer un nouveau projet que vous sauvegardez sous le nom Ex_2xx.vbp. Laissez les propriétés de la feuille par défaut sauf pour les caractéristiques suivantes:
    • NAME: Animation
    • CAPTION: BitBlt
  2. Ajoutez ensuite un contrôle Zone d'image (PictureBox). Nommez-le IM_Arrière. Sélectionnez l'image Paysage.bmp (téléchargée au début de cette fiche) pour la propriété PICTURE. La hauteur (HEIGHT) devrait être à 3705 et la largeur (WIDTH) à 4680. Placez cet objet comme dans le modèle un peu plus bas. Les propriétés AUTOSIZE et AUTOREDRAW doivent être à True et SCALEMODE à Pixel.
  3. Ajoutez ensuite trois autres contrôles Zone d'image (PictureBox). Les trois ont la propriété HEIGHT réglée à 1185 et la propriété WIDTH à 1095. Nommez le premier IM_vaisseau, le second IM_masque et le troisième IM_tempor. Assurez-vous aussi que AUTOSIZE, AUTOREDRAW et HASDC sont initialisés à True pour les trois. Enfin, SCALEMODE doit indiquer 3-Pixel.
  4. Insérez l'image Vaisseau.bmp dans la propriété PICTURE de IM_vaisseau et Vaisseau_masque.bmp dans celle de IM_masque. IM_tempor ne contient pas d'image pour le moment.
  5. Créez un bouton ayant Animer comme CAPTION et BO_Animer comme NAME.

  1. Vous devez maintenant ajouter les instructions nécessaires à l'animation. Copiez d'abord le code suivant dans la feuille pour déclarer la fonction API.

Private Declare Function BitBlt _
Lib "gdi32" ( _
   ByVal hDestDC As Long, _
   ByVal x As Long, ByVal y As Long, _
   ByVal nWidth As Long, ByVal nHeight As Long, _
   ByVal hSrcDC As Long, _
   ByVal xSrc As Long, ByVal ySrc As Long, _
   ByVal dwRop As Long _
) As Long   
'Déclaration de la fonction API

  1. Ajoutez ensuite le code ci-dessous dans le bouton Bo_Animer.

Private Sub Bo_Animer_Click()
   Static V_X, V_Y, V_L, V_H As Long 
'Déclaration des variables
   Static V_arrplan As Boolean
   Dim V_Anc As Long
   V_X = -IM_vaisseau.ScaleWidth  
'Emplacement de départ
   V_Y = IM_arrière.ScaleHeight
   V_L = IM_Vaisseau.ScaleWidth 
'Enregistre les tailles dans des variables locales 
   V_H =IM_Vaisseau.ScaleHeight 
' pour aller plus vite
   Do  
'Boucle d'animation
 
  'Restaure l'arrière-plan sauf si c'est la première fois que l'on dessine l'objet
      If V_arrplan  = True Then
         V_Anc = BitBlt(Im_arrière.hDC, V_X, V_Y, V_L, V_H, _
            IM_tempor.hDC, 0, 0, vbSrcCopy)  
  
'Arrête le déplacement de l'image quand elle atteint les bords
         If V_X > IM_arrière.ScaleWidth Then
            V_arrplan = False
            IM_arrière.Refresh
           Exit Do
         End If
      End If
   'Déplace l'image
      V_X = V_X + 1
      If V_X < 0.5 * IM_arrière.ScaleWidth _
        Or V_X > 0.8 * IM_arrière.ScaleWidth Then
           V_Y =V_Y - 1
      Else
           V_Y = V_Y + 1
      End If
  
'Sauvegarde l'arrière-plan du nouvel emplacement
      V_Anc = BitBlt(IM_tempor.hDC, 0, 0, V_L, V_H, _
         IM_arrière.hDC, V_X, V_Y, vbSrcCopy)
      V_arrplan = True
  
'Application du masque
      V_Anc = BitBlt(IM_arrière.hDC, V_X, V_Y,V_L,V_H, _
         IM_Masque.hDC, 0, 0, vbSrcAnd)
  
'Dessin de l'image
      V_Anc = BitBlt(IM_arrière.hDC, V_X, V_Y,V_L,V_H, _
         IM_Vaisseau.hDC, 0, 0, vbSrcPaint)
      IM_arrière.Refresh
   Loop
End Sub

  1. Voici venu le temps d'essayer votre animation. Mais, auparavant, commencez par sauvegarder pour éviter les mauvaises surprises.

  2. Il est possible de cacher les fenêtres du haut afin de ne voir que l'animation. Pour ce faire, il suffit de régler la propriété Visible de chaque Zone d'image (PictureBox) -sauf le paysage, comme de raison- à False. Faites-le et testez à nouveau votre animation avant de sauvegarder sous le nom Ex_2bxx.vbp.

Application:

  • Créez une nouvelle animation en utilisant un arrière-plan et une image de votre choix. N'oubliez pas de créer votre masque à l'aide d'un logiciel de dessin. Enregistrez-le sous le nom  Ex_2cxx.vbp

 

Création d'aide
 
- À propos
- Astuce du jour
 
Cryptage
 
- Mot de passe
- Cryptage de fichier
 
Base de données
 
- Bibliothèque
 
Winsock
 
- Serveur de chat
- Client de chat 1
- Client de chat 2
 
Jeu d'arcade
 
- Interface
- Programmation 1
- Programmation 2
- Programmation 3
- Programmation 4
 
Navigateur WEB
 
- Interface 1
- Interface 2
- Interface 3
- Interface 4
- Programmation 1
- Programmation 2
- Programmation 3
- Programmation 4
© Copyright 2002 - Design : Webmasters-fr.net