Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

  1. #1
    Responsable Lazarus & Pascal

    Apprendre à créer des transitions d'image à image avec Lazarus et BGRABitmap (3)
    Apprendre à créer des transitions d'image à image - Travailler avec des masques
    Avec Lazarus et BGRABitmap



    Bonjour à toutes et à tous !

    Après avoir installé la bibliothèque BGRABitmap, bâti un logiciel de test avec la prise en charge de la vitesse d'affichage et de l'opacité, produit les premières transitions par simple recouvrement, le tutoriel proposé à présent décrit comment utiliser des masques pour des résultats encore plus intéressants.

    Voici par exemple une des transitions que vous obtiendrez sans peine après avoir lu ce tutoriel :




    Pour lire le tutoriel, c'est ici : https://gilles-vasseur.developpez.co...sitions/bgra3/

    Que pensez-vous de ce tutoriel ?
    Quelle utilisation faites-vous du graphisme avec Lazarus ?

    Retrouvez les meilleurs cours et tutoriels pour apprendre la programmation avec Lazarus.
    Accès à mon site et à mon blog. Actualités, cours et ressources Delphi, Lazarus et Pascal.
    Pensez à la balise - Quelqu'un vous a aidé ou vous appréciez une intervention ? Pensez au

  2. #2
    Membre confirmé
    Bonjour et merci pour ces joli tutoriels !

    Petite remarque sur FillRectAntialias. Les procédures avec des paramètres de type Single suppose a priori que les coordonnées sont centrées sur les pixels. Donc la ligne suivante:
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    LBGRAMask.FillRectAntialias(0, 0, imgResult.ClientWidth, imgResult.ClientHeight, BGRABlack);

    n'efface pas vraiment tout. Le 0,0 ne remplit qu'à moitié les pixels en haut à gauche.

    Pour remplir tout, il faut spécifier le paramètre pixelCenteredCoordinates à false. Cela revient alors au même résultat qu'en utilisant la procédure FillRect tout court.

    Notez que dans ce cas, il s'agit d'effacer toute l'image, ce qui peut se faire avec
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    LBGRAMask.Fill(BGRABlack);


    Sinon, il me semble que dans la ligne suivante :
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    LBGRAMask := TBGRABitmap.Create(imgResult.ClientWidth, ClientHeight, BGRABlack);

    Il s'agit en fait de imgResult.ClientHeight au lieu de ClientHeight.

    Cordialement
    Par-delà nos conceptions du bien et du mal se trouve une prairie. Je te rencontrerai là-bas.

  3. #3
    Responsable Lazarus & Pascal

    Bonjour Johann,

    Merci pour cette relecture attentive

    La remarque sur les pixels avec les single est tout à fait pertinente. J'avais cru bon utiliser les méthodes avec anticrénelage dès cette introduction, car le composant final utilise les single (et non les entiers comme les démos), mais c'est effectivement au détriment de l'exactitude du dessin obtenu.
    Quant à la ligne de code reproduite, elle contient en effet un oubli .

    Je corrige l'ensemble et je t'ajoute aux contributeurs.

    Encore merci à toi,

    Gilles
    Accès à mon site et à mon blog. Actualités, cours et ressources Delphi, Lazarus et Pascal.
    Pensez à la balise - Quelqu'un vous a aidé ou vous appréciez une intervention ? Pensez au

  4. #4
    Membre confirmé
    C'est tout naturel Gilles pour moi d'être là pour les projets en relation avec ma bibliothèque.
    Par-delà nos conceptions du bien et du mal se trouve une prairie. Je te rencontrerai là-bas.