Les transitions entre images sous Lazarus avec BGRABitmap (XII) - Les expansions de rectangles
par
, 05/04/2018 à 07h55 (932 Affichages)
Comme nous avons vu ce qu'est un masque et comment nous en servir, nous allons explorer les possibilités qu'offre cette technique. En effet, si nous avons envisagé le cas d'une croix, nous pouvons bien entendu partir d'une ellipse, d'un rectangle ou d'une forme encore plus complexe.
Une première série de transitions aura ainsi trait à l'expansion progressive d'un rectangle qui remplacera l'image d'origine par celle de destination ou découvrira cette dernière.
Les expansions de rectangles
La transition RightBottomExpand
La transition RightBottomExpand agrandira un rectangle en direction du point inférieur droit de l'image finale, recouvrant peur à peu l'image d'origine par celle de destination.
Le schéma associé à cette transition est donc le suivant :
Le code à insérer dans notre application modèle ne comporte qu'une ligne :
Code pascal : Sélectionner tout - Visualiser dans une fenêtre à part LBGRAMask.FillRectAntialias(0, 0, imgResult.ClientWidth * fStep div 100, imgResult.ClientHeight * fStep div 100, BGRAWhite);
En effet, le schéma montre clairement que le masque est réduit à un rectangle toujours situé dans le coin supérieur gauche de l'image.
Un aperçu de son action est fourni ci-après :
Les autres expansions
Les transitions de la même famille ressemblent beaucoup à RightBottomExpand, aussi nous contenterons-nous de fournir le code associé à chacune et un instantané de la transition en action.
Bien sûr, vous aurez eu le courage et la sagesse de trouver le code par vous-même, au besoin avec l'aide d'un schéma approprié !
Le code associé à LeftBottomExpand sera :
Code pascal : Sélectionner tout - Visualiser dans une fenêtre à part LBGRAMask.FillRectAntialias(imgResult.ClientWidth, 0, imgResult.ClientWidth * (100 - fStep) div 100, imgResult.ClientHeight * fStep div 100, BGRAWhite);
Le code associé à RightTopExpand sera :
Code pascal : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 LBGRAMask.FillRectAntialias(0, imgResult.ClientHeight, imgResult.ClientWidth * fStep div 100, imgResult.ClientHeight * (100 - fStep) div 100, BGRAWhite);
Enfin, le code associé à LeftTopExpand sera :
Code pascal : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 LBGRAMask.FillRectAntialias(imgResult.ClientWidth, imgResult.ClientHeight,imgResult.ClientWidth * (100 - fStep) div 100, imgResult.ClientHeight * (100 - fStep) div 100, BGRAWhite);
Dans le prochain billet, nous examinerons les contractions qui sont des transitions inverses de celles qui viennent d'être vues...