IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
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

Lazarus Pascal Discussion :

Apprendre à créer des transitions d'image à image avec Lazarus et BGRABitmap (1)


Sujet :

Lazarus Pascal

  1. #21
    Rédacteur/Modérateur

    Avatar de Roland Chastain
    Homme Profil pro
    Enseignant
    Inscrit en
    Décembre 2011
    Messages
    4 092
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Décembre 2011
    Messages : 4 092
    Points : 15 532
    Points
    15 532
    Billets dans le blog
    9
    Par défaut
    Je vous propose, au cas où cela intéresserait quelqu'un, un article sur la bibliothèque BGRABitmap que j'avais écrit l'autre année (pour un livre qui finalement n'a pas vu le jour). Johann avait eu la gentillesse de le relire, donc l'article ne devrait pas contenir trop d'erreurs.

    rchastain-initiation-bgrabitmap.zip

    @Jipété
    C'est écrit par quelqu'un qui travaille sous Windows.


    Mais le mieux est sans doute de consulter le cours écrit par Johann lui-même.

  2. #22
    Expert éminent sénior
    Avatar de Jipété
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    11 011
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 11 011
    Points : 15 496
    Points
    15 496
    Par défaut
    Dans le chapitre II-B du tuto [EDIT : et dans celui de Johann aussi /EDIT], il faudrait rajouter une ligne :

    Citation Envoyé par tuto d'origine
    Nous avons seulement à demander sa compilation en cliquant sur l'icône marquée « Compiler ». En quelques secondes, le tour est joué !

    Désormais, si nous désirons utiliser cette bibliothèque, nous procéderons comme indiqué ci-après
    .
    Citation Envoyé par proposition d'ajout
    avec la limitation de l'impossibilité d'utiliser le pas-à-pas pour débugger un truc tordu
    Protocole de test : deux boutons dans le même projet.
    Un bouton qui appelle la boîte de dialogue OpenFile et si réussite, appelle image := TBGRAAnimatedGif.Create(od.FileName);.
    Le point d'arrêt est sur cette ligne et le mode "pas-à-pas approfondi" n'ouvre pas BRGAAnimatedGif.pas, même en rajoutant des points d'arrêt sur les procédures Create.
    Un autre bouton de contrôle se contente de faire ShowMessage('bidon'); et le mode "pas-à-pas approfondi" sur cette ligne ouvre bien messagedialogs.inc.


    Citation Envoyé par Roland Chastain Voir le message
    @Jipété
    C'est écrit par quelqu'un qui travaille sous Windows.
    La typographie se joue de ces querelles de clochers,

    Par contre, je n'ai pas trouvé une seule occurrence du mot TBGRAVirtualScreen dans les deux tutos, composant utilisé dans testgif/project2, qui m'a fait misérer ce matin, et je ne sais donc toujours pas ce que c'est que ce truc.
    C'est ce manque de doc qui m'a fait abandonner cette suite (plus le fait que j'utilise très peu le graphisme, malgré les impressions), déjà installée il y a pas mal d'années (version 7.2).

  3. #23
    Rédacteur

    Avatar de gvasseur58
    Homme Profil pro
    Cultivateur de code (bio)
    Inscrit en
    Février 2013
    Messages
    1 436
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Cultivateur de code (bio)
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2013
    Messages : 1 436
    Points : 20 858
    Points
    20 858
    Billets dans le blog
    84
    Par défaut
    Citation Envoyé par circular17 Voir le message
    Effectivement, le composant TImage est une surcouche qui peut ralentir l'affichage. Le scintillement peut être empêché sur la PaintBox avec DoubleBuffer, ou bien en utilisant le composant TBGRAVirtualScreen du paquet BGRAControls. Ce composant expose un évenement OnRedrawBitmap. Il est possible de demander un réaffichage différé avec DiscardBitmap ou bien de demander un réaffichage immédiat avec RedrawBitmap. Cela dit, cela demanderait de refactoriser un peu le code qui pour le moment est une boucle qui contient le dessin.
    Merci pour ces précisions. Je rassure tout le monde : le composant final est bâti sur TGraphicControl et utilise un TTimer. La boucle n'est qu'une solution temporaire afin de se concentrer sur les transitions elles-mêmes. De mon point de vue, il s'agit d'avoir un aperçu de l'effet obtenu, la transition réelle ayant une implémentation bien plus optimisée et complexe (par exemple, j'introduis des interpolations qui évitent la linéarité des transitions). Dans les exemples, j'ai définitivement abandonné le composant TImage (de toute façon bien trop lourd pour l'usage que j'en faisais) puisqu'il est avantageusement remplaçable par un TPaintBox. Quant aux utilisateurs d'Apple, ils pourront intervenir dans la suite de la série : je n'ai pas d'Apple (et je n'en aurai pas car je fais une allergie à cette marque ) et ne peux rien vérifier.

    Citation Envoyé par circular17 Voir le message
    Il se peut cependant que le taux du Timer soit un peu lent. Si on veut utiliser toute la CPU disponible, on peut utiliser Application.AddOnIdleHandler / RemoveOnIdleHandler pour inscrire une procédure qui sera appelée dès que possible. Dans cette procédure on peut appeler Sleep et Invalidate, ce qui déclenchera l’événement OnPaint tout le temps.
    TTimer n'est pas ce qu'il y a de mieux, mais pour des transitions d'image à image, ce n'est en général pas un problème rédhibitoire, sauf pour les grands formats d'images. Je vais essayer, mais je crains les applications qui phagocytent toute la CPU .

    Encore merci,

    Gilles

  4. #24
    Rédacteur

    Avatar de gvasseur58
    Homme Profil pro
    Cultivateur de code (bio)
    Inscrit en
    Février 2013
    Messages
    1 436
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Cultivateur de code (bio)
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2013
    Messages : 1 436
    Points : 20 858
    Points
    20 858
    Billets dans le blog
    84
    Par défaut
    Citation Envoyé par Jipété Voir le message
    Ah !
    Alors c'est le tuto de Gilles qui m'a induit en erreur (oui, on joue sur les mots, Gilles propose BGRAbitmap et ne dit pas un mot de ces fichus contrôles), et la page de téléchargement de BGRABitmap qui est mal fichue car nulle part il n'est question de cette subtilité.
    Bonjour Jipété,

    Je n'ai pas dit un mot de ces fichus contrôles, car ce n'était pas le sujet . Le lien indiqué dans le tutoriel renvoie exclusivement vers la bibliothèque dont on a besoin dans ce tutoriel (et dans ceux qui suivent d'ailleurs), à savoir BGRABitmap 9.7.2 (à ce jour). BGRAControls est une bibliothèque fondée sur BGRABitmap :elle contient de nombreux composants utiles, mais (c'est un point de vue personnel), elle me paraît pas encore assez aboutie. Je ne vois aucune mention de cette bibliothèque dans la page visée...

    La page visée n'est donc pas "mal fichue", car elle ne contient que BGRABitmap.
    Il n'empêche que tu as soulevé de vrais problèmes : mais quelle idée de toujours aller réveiller d'anciens programmes ?

    Gilles

  5. #25
    Membre confirmé

    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    140
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2009
    Messages : 140
    Points : 623
    Points
    623
    Par défaut
    Effectivement Gilles tu as tout à fait raison, BGRABitmap ne nécessite pas d'être installé. Les paquets qui ont besoin d'être installés sont ceux qui ajoutent des contrôles utilisateur. Les installer permet de les voir dans la barre d'outils et d'ouvrir les projets qui les contiennent.

    J'ai ajouté des liens vers les paquets qui utilisent BGRABitmap dans le wiki. Cela apportera plus une vision d'ensemble.

    Il n'y a pas encore de documentation pour l'utilisation d'OpenGL avec BGRABitmap. Je vais peut-être en écrire une. C'est toujours le dilemme : passer du temps à coder des nouvelles fonctionnalités ou passer du temps à écrire de la documentation et faire attendre les demandes de fonctionnalités.

    Jipété, le paquet BGRAControls a sa page ici : http://wiki.freepascal.org/BGRAControls.
    Et son source est ici : https://github.com/bgrabitmap/bgracontrols

    Le composant TBGRAVirtualScreen est simplement un panel sur lequel on peut dessiner, avec les événements dont je parle plus haut.

    J'aime beaucoup ton tuto Roland. Les programmes d'exemples sont bienvenus. Que penses-tu de le publier en ligne ?

  6. #26
    Rédacteur/Modérateur

    Avatar de Roland Chastain
    Homme Profil pro
    Enseignant
    Inscrit en
    Décembre 2011
    Messages
    4 092
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Décembre 2011
    Messages : 4 092
    Points : 15 532
    Points
    15 532
    Billets dans le blog
    9
    Par défaut
    Citation Envoyé par circular17 Voir le message
    J'aime beaucoup ton tuto Roland. Les programmes d'exemples sont bienvenus. Que penses-tu de le publier en ligne ?
    Merci.

    Le publier, oui, pourquoi pas ? Mais je ne me sens pas le courage de le convertir au format DVP, alors il faudrait le publier ailleurs. As-tu une idée ?

    @Gilles

    J'ai hâte de voir le composant terminé.

    @Johann

    Je me souviens d'avoir vu dans je ne sais plus quel exemple que tu avais posté (que je ne retrouve plus malheureusement) une unité bgravirtualscreen.pas qui ne faisait pas encore partie du paquet BGRAControls. Est-ce que ça te rappelle quelque chose ? Si oui, as-tu encore cette unité ? Ne serait-ce pas une bonne idée de l'inclure dans BGRABitmap, ou au moins dans les exemples ? Car personnellement je trouve ce composant bien pratique, mais ça m'embête (un peu) d'avoir à installer les BGRAControls uniquement pour ce composant. Et à la rigueur je n'ai pas besoin de l'avoir sur la palette : j'aimerais autant pouvoir le créer dans mon code. Qu'en dis-tu ?

  7. #27
    Membre confirmé

    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    140
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2009
    Messages : 140
    Points : 623
    Points
    623
    Par défaut
    Citation Envoyé par Roland Chastain Voir le message
    Merci.

    Le publier, oui, pourquoi pas ? Mais je ne me sens pas le courage de le convertir au format DVP, alors il faudrait le publier ailleurs. As-tu une idée ?
    On peut ajouter une archive téléchargeable depuis le wiki de BGRABitmap/fr. On pourrait mettre un lien vers mon tutoriel sur developpez.com. Au moins ce serait dans la nature.

    Je me souviens d'avoir vu dans je ne sais plus quel exemple que tu avais posté (que je ne retrouve plus malheureusement) une unité bgravirtualscreen.pas qui ne faisait pas encore partie du paquet BGRAControls. Est-ce que ça te rappelle quelque chose ? Si oui, as-tu encore cette unité ? Ne serait-ce pas une bonne idée de l'inclure dans BGRABitmap, ou au moins dans les exemples ? Car personnellement je trouve ce composant bien pratique, mais ça m'embête (un peu) d'avoir à installer les BGRAControls uniquement pour ce composant. Et à la rigueur je n'ai pas besoin de l'avoir sur la palette : j'aimerais autant pouvoir le créer dans mon code. Qu'en dis-tu ?
    Ben cela m'embête un peu de séparer le composant de BGRAControls. On fait équipe. Et puis il y a des composants pas mal dans BGRAControls. La barre de progression radiale, les boutons de différents styles, la forme (TShape) mais avec antialiasing, etc.

  8. #28
    Rédacteur/Modérateur

    Avatar de Roland Chastain
    Homme Profil pro
    Enseignant
    Inscrit en
    Décembre 2011
    Messages
    4 092
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Décembre 2011
    Messages : 4 092
    Points : 15 532
    Points
    15 532
    Billets dans le blog
    9
    Par défaut
    Citation Envoyé par circular17 Voir le message
    On peut ajouter une archive téléchargeable depuis le wiki de BGRABitmap/fr. On pourrait mettre un lien vers mon tutoriel sur developpez.com. Au moins ce serait dans la nature.
    Ça me convient. Je peux te laisser le faire ? Je pourrais aussi le faire mais je ne connais pas le fonctionnement du wiki. J'imagine qu'il faut être autorisé pour modifier les pages ?

    Citation Envoyé par circular17 Voir le message
    Ben cela m'embête un peu de séparer le composant de BGRAControls. On fait équipe. Et puis il y a des composants pas mal dans BGRAControls. La barre de progression radiale, les boutons de différents styles, la forme (TShape) mais avec antialiasing, etc.
    Merci pour ta réponse. J'aime bien cette idée de faire équipe.

    @Gilles

    J'espère que tu nous pardonneras de parasiter la discussion sur ton tutoriel. En fait c'est la faute à Jipété.

Discussions similaires

  1. Réponses: 0
    Dernier message: 20/12/2013, 15h29
  2. [Images] Créer des miniatures d'une image
    Par jeangaza dans le forum Bibliothèques et frameworks
    Réponses: 0
    Dernier message: 15/06/2010, 16h42
  3. Créer des Section dans un Image JPG
    Par Charo dans le forum Imagerie
    Réponses: 2
    Dernier message: 31/01/2007, 10h56

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo