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 :

Problème avec DrawPolyLineAntialias de la bibliothèque BGRABitmap


Sujet :

Lazarus Pascal

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre émérite
    Avatar de ChPr
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    2 122
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 79
    Localisation : France, Val d'Oise (Île de France)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 2 122
    Par défaut Problème avec DrawPolyLineAntialias de la bibliothèque BGRABitmap
    Bonjour à toutes et à tous,

    Je souhaite tracer une ligne composée de nombreux points sur un bitmap. En test, je crée un fichier de 1000 points aléatoires
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
     
        Trace: array of TPointF;
        bmpWork: TBGRABitmap;
     
    ...
     
      bmpWork := TBGRABitmap.Create('MonFichier.jpg');
      SetLength(Trace, 1000);
      for i:= 0 to 999 do
      begin
        Trace[i].x:= Random(500)+500;
        Trace[i].y:= Random(500)+300;
      end;
      bmpWork.DrawPolyLineAntialias(Trace, $FF0000, 2);
      for i:= 0 to 998 do
        bmpWork.DrawLineAntialias(Trace[i].x, Trace[i].y, Trace[i+1].x, Trace[i+1].y, $FF0000, 2);
    L'utilisation de la méthode "DrawPolyLineAntialias" prends 20 secondes !!! alors que la boucle utilisant "DrawLineAntialias" et donnant le même résultat ne prend qu'une fraction de seconde.

    Il y a quelques chose que je n'ai pas vu, pas compris ?

    Merci pour vos renseignements.

    Pierre

  2. #2
    Membre Expert
    Avatar de BeanzMaster
    Homme Profil pro
    Amateur Passionné
    Inscrit en
    Septembre 2015
    Messages
    1 899
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Amateur Passionné
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Septembre 2015
    Messages : 1 899
    Billets dans le blog
    2
    Par défaut
    Bonjour Pierre

    Oui c'est normal, car la fonction "DrawPoly" est plus complexe et nécessite plus de calcul qu'une simple ligne tracée avec "DrawLine". D'ou cette différence de performance

    A+
    • "L'Homme devrait mettre autant d'ardeur à simplifier sa vie qu'il met à la compliquer" - Henri Bergson
    • "Bien des livres auraient été plus clairs s'ils n'avaient pas voulu être si clairs" - Emmanuel Kant
    • "La simplicité est la sophistication suprême" - Léonard De Vinci
    • "Ce qui est facile à comprendre ou à faire pour toi, ne l'est pas forcément pour l'autre." - Mon pèrei

    Mes projets sur Github - Blog - Site DVP

  3. #3
    Membre émérite
    Avatar de ChPr
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    2 122
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 79
    Localisation : France, Val d'Oise (Île de France)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 2 122
    Par défaut
    J'ai essayé de tracer cette fonction et c'est vrai que c'est le parcours du combattant !

    Mais quand même, un rapport de l'ordre de 50 dans les temps d'exécution pour un aspect visuel que je n'ai même pas pu identifier !

    Je suis un tout débutant dans l'utilisation de cette bibliothèque et vu la pléthore de fonctions disponibles c'est difficile de trouver la bonne. En l’occurrence, existe t-il une fonction DrawLine basée sur un tableau de points ?

    Cordialement.

    Pierre

  4. #4
    Membre Expert
    Avatar de BeanzMaster
    Homme Profil pro
    Amateur Passionné
    Inscrit en
    Septembre 2015
    Messages
    1 899
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Amateur Passionné
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Septembre 2015
    Messages : 1 899
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par ChPr Voir le message
    J'ai essayé de tracer cette fonction et c'est vrai que c'est le parcours du combattant !

    Mais quand même, un rapport de l'ordre de 50 dans les temps d'exécution pour un aspect visuel que je n'ai même pas pu identifier !

    Je suis un tout débutant dans l'utilisation de cette bibliothèque et vu la pléthore de fonctions disponibles c'est difficile de trouver la bonne. En l’occurrence, existe t-il une fonction DrawLine basée sur un tableau de points ?

    Cordialement.

    Pierre
    Salut pour l'apprentissage tu peux consulter les tutos de Gilles et Roland. Sinon pour ce qui est d'une fonction DrawLine basée sur un tableau de points, non pas à ma connaissance. Mais tu peux facilement en coder une basée sur ton exemple

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    procedure DrawLineFromPoints(BmpWork : TBGRABitmap; Trace : Array of TPoint);
    var
      l, i : Integer;
    begin
     l := Length(Trace)-1;
     for i:= 0 to l do
        bmpWork.DrawLineAntialias(Trace[i].x, Trace[i].y, Trace[i+1].x, Trace[i+1].y, $FF0000, 2);
    end;
    Bon dimanche

    A+
    • "L'Homme devrait mettre autant d'ardeur à simplifier sa vie qu'il met à la compliquer" - Henri Bergson
    • "Bien des livres auraient été plus clairs s'ils n'avaient pas voulu être si clairs" - Emmanuel Kant
    • "La simplicité est la sophistication suprême" - Léonard De Vinci
    • "Ce qui est facile à comprendre ou à faire pour toi, ne l'est pas forcément pour l'autre." - Mon pèrei

    Mes projets sur Github - Blog - Site DVP

Discussions similaires

  1. [Lazarus] Problème de tracé avec la bibliothèque BGRABitMap
    Par ChPr dans le forum Lazarus
    Réponses: 1
    Dernier message: 14/01/2013, 15h17
  2. problème avec bibliothéque Gtk
    Par lili81 dans le forum C++Builder
    Réponses: 0
    Dernier message: 22/10/2008, 14h30
  3. problème avec la bibliothèque multimedia microsoft
    Par oduss dans le forum Microsoft Office
    Réponses: 0
    Dernier message: 05/02/2008, 12h35
  4. Problème avec la "Gestion des bibliothèques dynamiques"
    Par GoustiFruit dans le forum Delphi
    Réponses: 15
    Dernier message: 31/05/2006, 10h54
  5. Problème avec la bibliothèque glut
    Par lia dans le forum GLUT
    Réponses: 10
    Dernier message: 20/02/2006, 10h24

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