IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Voir le flux RSS

Blog de Gilles Vasseur - Pascal et compagnie

Les transitions entre images sous Lazarus avec BGRABitmap (VIII) - Le recouvrement (suite)

Noter ce billet
par , 27/03/2018 à 08h52 (935 Affichages)
Dans ce billet, nous allons poursuivre notre exploration des effets de transition par recouvrement en compliquant très légèrement les calculs...

Le recouvrement (suite)

Le recouvrement OverBottomRight

Le recouvrement OverBottomRight, comme ceux qui suivent, utilise une diagonale pour la translation. Cela signifie simplement qu'il faut modifier dans le même mouvement les variables locales LX et LY.

OverBottomRight suivra le schéma ci-après :

Nom : overbottomright.png
Affichages : 122
Taille : 1,7 Ko

Nous voyons clairement que l'abscisse doit passer de -x à 0 et que l'ordonnée doit suivre la même progression en passant de -y à 0. Ces mouvements se traduisent ainsi pour le code :

Code pascal : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
LX := -imgResult.ClientWidth + imgResult.ClientWidth * fStep div 100; // OVERBOTTOMRIGHT
LY := -imgResult.ClientHeight + imgResult.ClientHeight * fStep div 100;

Une étape de l'affichage correspondra alors à l'écran suivant :

Nom : boverbottomright.png
Affichages : 143
Taille : 280,4 Ko

Rien de plus simple, n'est-ce pas ?

Le recouvrement OverBottomLeft

Nous devinons que OverBottomLeft sera très proche de ce que nous venons de traiter.

Comme d'habitude, le schéma de la translation désirée nous éclairera sur les calculs à effectuer :

Nom : overbottomleft.png
Affichages : 114
Taille : 2,0 Ko

Il nous faut donc passer de x à 0 et de -y à 0, c'est-à-dire décrémenter l'abscisse tout en incrémentant l'ordonnée. La traduction en code est immédiate :

Code pascal : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
LX := imgResult.ClientWidth - imgResult.ClientWidth * fStep div 100; // OVERBOTTOMLEFT
LY := -imgResult.ClientHeight + imgResult.ClientHeight * fStep div 100;

L'instantané suivant de l'écran donne une idée de l'effet obtenu :

Nom : boverbottomleft.png
Affichages : 143
Taille : 292,8 Ko

Le recouvrement OverTopRight

En continuant notre exploration des transitions de recouvrement par simple translation, nous chercherons à viser le haut à droite de l'image, ce qui se traduira par le schéma :

Nom : overtopright.png
Affichages : 133
Taille : 1,9 Ko

La lecture des données fournies par ce schéma montre que le recouvrement OverTopRight doit passer de -x à 0 pour l'abscisse et de y à 0 pour l'ordonnée.

Le code devient alors :

Code pascal : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
LX := -imgResult.ClientWidth + imgResult.ClientWidth * fStep div 100; // OVERTOPRIGHT
LY := imgResult.ClientHeight - imgResult.ClientHeight * fStep div 100;

Une copie d'écran confirme la justesse de notre raisonnement et de nos calculs :

Nom : bovertopright.png
Affichages : 146
Taille : 275,8 Ko

Le recouvrement OverTopLeft

L'ultime recouvrement que nous programmerons consiste à effectuer une translation vers le haut à gauche de l'image. Ce recouvrement sera nommé OverTopLeft. Son schéma correspondra à :

Nom : overtopleft.png
Affichages : 120
Taille : 1,8 Ko

On y lit que l'abscisse doit décroître de x à 0 tout comme l'ordonnée qui doit passer de y à 0. Le code à écrire sera donc :

Code pascal : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
LX := imgResult.ClientWidth - imgResult.ClientWidth * fStep div 100; // OVERTOPLEFT
LY := imgResult.ClientHeight - imgResult.ClientHeight * fStep div 100;

Une copie d'écran confirmera encore une fois que nous sommes sur la bonne voie :

Nom : bovertopleft.png
Affichages : 150
Taille : 277,6 Ko

Avec cette transition, nous terminons notre exploration des translations simples. Nous devons surtout retenir que quelques méthodes ont suffi pour obtenir ces résultats somme toute plutôt intéressants :

  • Create et Free pour la création et la destruction des objets de dessin propres à la bibliothèque BGRABitmap ;
  • Resample pour redéfinir les dimensions d'une image et donc normaliser les différentes images de travail ;
  • FillRect pour dessiner un rectangle plein ;
  • PutImage pour dessiner un objet de type TBGRABitmap sur un autre de même type, avec prise en compte de la transparence ;
  • Draw pour dessiner un objet de type TBGRABitmap sur le canevas d'un contrôle par exemple.


La suite permettra de compléter cette liste au fur et à mesure de nos besoins : pour cela, nous devrons créer des transitions plus complexes.

Envoyer le billet « Les transitions entre images sous Lazarus avec BGRABitmap (VIII) - Le recouvrement (suite) » dans le blog Viadeo Envoyer le billet « Les transitions entre images sous Lazarus avec BGRABitmap (VIII) - Le recouvrement (suite) » dans le blog Twitter Envoyer le billet « Les transitions entre images sous Lazarus avec BGRABitmap (VIII) - Le recouvrement (suite) » dans le blog Google Envoyer le billet « Les transitions entre images sous Lazarus avec BGRABitmap (VIII) - Le recouvrement (suite) » dans le blog Facebook Envoyer le billet « Les transitions entre images sous Lazarus avec BGRABitmap (VIII) - Le recouvrement (suite) » dans le blog Digg Envoyer le billet « Les transitions entre images sous Lazarus avec BGRABitmap (VIII) - Le recouvrement (suite) » dans le blog Delicious Envoyer le billet « Les transitions entre images sous Lazarus avec BGRABitmap (VIII) - Le recouvrement (suite) » dans le blog MySpace Envoyer le billet « Les transitions entre images sous Lazarus avec BGRABitmap (VIII) - Le recouvrement (suite) » dans le blog Yahoo

Commentaires