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 :

Utilisation du "clipping"


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 Utilisation du "clipping"
    Bonjour à toutes et à tous,

    Dans mon application GPS que je développe, j'ai un bitmap de 1280 x 1280 pixels² que je peux, par zoom amener à 2560 x 2560 pixels². Mais, après déplacements, rotations et zoom avec la bibliothèque TBGRABitmap, je n'en visualise qu'une partie de 1024 x 600 pixels².

    La question que je me pose est : gagnerais-je du temps d'exécution en utilisant des fonctions de clipping ?

    NOTA : je n'ai jamais joué avec ce genre de fonctions. En existe-t-il avec la bibliothèque TBGRABitmap et connaissez-vous un lien expliquant ce mode de fonctionnement/utilisation.

    Cordialement.

    Pierre

  2. #2
    Rédacteur/Modérateur

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

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Décembre 2011
    Messages : 4 172
    Billets dans le blog
    9
    Par défaut
    Bonjour ! Pas trop bien compris votre question. Quelle est l'opération qui pose problème exactement ? Que voulez-vous faire exactement ?

  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
    Je cherche simplement à faire en sorte que la suite d'opérations que j'exécute soit la plus rapide possible.

    Celle qui prend le plus de temps est "PutImageAngle", environ 350 mS. Elle agit sur un bitmap de 1280 x 1280 pixels² :

    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
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    procedure TAffCarte.PaintBoxPaint(Sender: TObject);
    // Rafraichissement de l'affichage
      var
        CentreAff, BordAff: TPoint;
        T1, T2: TDateTime;
    begin
      try
        LBmp := TBGRABitmap.Create(DimCarte, DimCarte, BGRAWhite);
    //    LBmp.PutImage(Dec0.X-Depl.X, Dec0.Y-Depl.Y, bmpCarte, dmSet, 255); // Pas de rotation
        LBmp.PutImageAngle(Dec0.X-Depl.X, Dec0.Y-Depl.Y, bmpCarte, tckbAngle.Position,
             DemiCarte.X-(Dec0.X-Depl.X), DemiCarte.Y-(Dec0.Y-Depl.Y), $FF, DecalApresRot, False); // Déplacement et rotation
        BGRAReplace(LBmp, LBmp.Resample(Round(DimCarte*kZoom), Round(DimCarte*kZoom), rmSimpleStretch));
    //    LBmp:= TBGRABitmap(SimpleStretch(LBmp, Round(DimCarte*kZoom), Round(DimCarte*kZoom)));
        CentreAff.X:= Round(DemiCarte.X*kZoom);
        CentreAff.Y:= Round(DemiCarte.Y*kZoom);
        LBmp.DrawLine(CentreAff.X, 0, CentreAff.X, Round(DimCarte*kZoom), $FF, true, dmDrawWithTransparency);
        LBmp.DrawLine(0, CentreAff.Y, Round(DimCarte*kZoom), CentreAff.Y, $FF, true, dmDrawWithTransparency);
        HG.X:= Round((1-kZoom)*(DemiCarte.X))-128;
        HG.Y:= Round((1-kZoom)*(DemiCarte.Y))-340;
        LBmp.Draw(PaintBox.Canvas, HG.X, HG.Y, False); // Trace la carte avec ses déplacements, zoom et rotation
        LBmp.Destroy;
      except
        LBmp.Destroy;
      end;
      Mem:= GetHeapStatus;
      Edit5.Text:= IntToStr(Mem.TotalFree);
    end;
    Ne connaissant pas les fonctions de clipping, je me disais que cela pouvait peut-être aider.

    Cordialement.

    Pierre

  4. #4
    Rédacteur/Modérateur

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

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Décembre 2011
    Messages : 4 172
    Billets dans le blog
    9
    Par défaut
    D'accord, je comprends mieux pourquoi ça prend du temps. Je donne ma langue au chat en ce qui concerne le clipping.

  5. #5
    Expert confirmé
    Avatar de anapurna
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2002
    Messages
    3 491
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 491
    Par défaut
    salut

    de plus l'exemple n'utilise pas de callback pour mettre a jour l’écran ce qui pourrais être très efficace

    si j'ai bien compris ton problème

    1°) Tu reçois des données de ton GPS
    2°) a l'aide des données tu affiche la carte correspondante (Carte de fond)

    3°) Tans que tu reçois des données du GPS Tu met a jours la zone et / ou la carte selon tes déplacements

    on vois bien que la mises a jour de ton ecran est conditionné par l'arrivé ou non des donnée de ton GPS
    il est donc impératif de "threader" tes datas et pas ton affichage

  6. #6
    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
    Citation Envoyé par anapurna Voir le message
    ... il est donc impératif de "threader" tes datas et pas ton affichage
    Si je traduis cette phrase dans mon langage, est-ce que cela veut dire :

    - Le traitement des images se fait dans le thread principal, c'est-à-dire l'application graphique principale,

    - Le traitement des données se fait dans le thread secondaire.

    Oui, Non ?

    Cordialement.

    Pierre

Discussions similaires

  1. [MySQL] Pourquoi dois-je utiliser des "quotes penchées" dans mes requêtes?
    Par v4np13 dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 29/02/2008, 23h23
  2. Réponses: 3
    Dernier message: 27/11/2006, 18h00
  3. utilisation des quotes
    Par Henry9 dans le forum Oracle
    Réponses: 1
    Dernier message: 13/11/2006, 21h40
  4. [AJAX] Utilisation des quotes
    Par illegalsene dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 03/10/2006, 09h23

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