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 :

Effacement graphique de texte avec TextOut [Lazarus]


Sujet :

Lazarus Pascal

  1. #1
    Membre éclairé
    Avatar de Jlmat
    Homme Profil pro
    Ex Informaticien et Consultant en Ressources Humaines, Retraité
    Inscrit en
    Avril 2008
    Messages
    382
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vienne (Poitou Charente)

    Informations professionnelles :
    Activité : Ex Informaticien et Consultant en Ressources Humaines, Retraité
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2008
    Messages : 382
    Par défaut Effacement graphique de texte avec TextOut
    Bonjour,

    Question de débutant, mais je ne me souviens plus comment on efface un texte sur canvas avant une nouvelle valeur :
    J'obtiens ceci :

    Nom : Aide 22.jpg
Affichages : 179
Taille : 5,4 Ko

    Les crochets supplémentaires obtenus viennent de la longueur des textes affichés précédemment. J'ai mis le code dans l'évènement d'un PaintBox sur fond noir :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Procedure Tform1.Paintboxmousemove ( Sender : Tobject ; Shift : Tshiftstate ;
      X , Y : Integer ) ;
    Begin
      With PaintBox.Canvas do
      begin
        {Effacement zone précédente}
        Brush.Color := clBlack;
        Font.Color  := clBlack;
        Rectangle(1,1,50,30);
        Font.Color  := ClText1;
        {Nouvelles coordonnées}
        TextOut(2,2,'[ '+inttostr(x)+' , '+inttostr(y)+' ]');//,BGRA(RTxt,GTxt,BTxt));
      end
    End;
    Si vous passez par là, merci de me rappeler la méthode.
    Je l'ai quelque part, mais je ne sais plus dans quelle application je l'utilisais et ne l'ai pas vue dans les tutoriels non plus...
    Merci

  2. #2
    Membre éclairé
    Avatar de Jlmat
    Homme Profil pro
    Ex Informaticien et Consultant en Ressources Humaines, Retraité
    Inscrit en
    Avril 2008
    Messages
    382
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vienne (Poitou Charente)

    Informations professionnelles :
    Activité : Ex Informaticien et Consultant en Ressources Humaines, Retraité
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2008
    Messages : 382
    Par défaut
    J'ai ajouté simplement la ligne en rouge:

    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
    Procedure Tform1.Paintboxmousemove ( Sender : Tobject ; Shift : Tshiftstate ;
      X , Y : Integer ) ;
    Begin
      bmpEcran.Draw(PaintBox.Canvas, 0, 0, True);
      With PaintBox.Canvas do
      begin
        {Effacement zone précédente}
        Brush.Color := clBlack;
        Font.Color  := clBlack;
        Rectangle(1,1,50,30);
        Font.Color  := ClText1;
        {Nouvelles coordonnées}
        TextOut(2,2,'[ '+inttostr(x)+' , '+inttostr(y)+' ]');//,BGRA(RTxt,GTxt,BTxt));
      end
    End;

  3. #3
    Membre Expert

    Homme Profil pro
    Directeur de projet
    Inscrit en
    Mai 2013
    Messages
    1 770
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Directeur de projet
    Secteur : Service public

    Informations forums :
    Inscription : Mai 2013
    Messages : 1 770
    Par défaut
    Bonjour,

    Un PaintBox n'est pas pérenne donc il n'y a rien à effacer. Cependant, il ne se redessine que si sa zone est modifiée (redimensionnement, déplacement par exemple). Il faut donc forcer le réaffichage quand la modification ne vient pas de l'extérieur, c'est-à-dire provoquer un onPaint avec un Repaint ou un Refresh voire un Update (qui n'est nécessairement immédiat).

    Si on veut que le fond soit noir, il est inutile de le repeindre à chaque fois. Il suffit de mettre le PaintBox sur quelque chose de noir.

    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
    var
       xms, yms : Integer;
     
    procedure Tform1.PaintboxPaintExecute(Sender : Tobject);  // Evénement OnPaint
    begin
       Font.Color  := ClText1;
       TextOut(2,2,'[ '+inttostr(xms)+' , '+inttostr(yms)+' ]');
    end;   
     
    procedure Tform1.Paintboxmousemove ( Sender : Tobject ; Shift : Tshiftstate ; X , Y : Integer ) ;
    begin
       xms := x;
       yms := y;
       Paintbox.Repaint;
    end;
    Salutations

  4. #4
    Membre éclairé
    Avatar de Jlmat
    Homme Profil pro
    Ex Informaticien et Consultant en Ressources Humaines, Retraité
    Inscrit en
    Avril 2008
    Messages
    382
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vienne (Poitou Charente)

    Informations professionnelles :
    Activité : Ex Informaticien et Consultant en Ressources Humaines, Retraité
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2008
    Messages : 382
    Par défaut
    Merci Guesset pour ce rappel!

    Citation Envoyé par Guesset Voir le message
    Bonjour,
    Un PaintBox n'est pas pérenne donc il n'y a rien à effacer. Cependant, il ne se redessine que si sa zone est modifiée...
    J'aimerai avoir 20 ans de moins pour mémoriser tout ça, mais je progresse toujours, c'est l'essentiel!

    A+

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Débutant] Texte avec exposant dans un graphique
    Par Philippe7483 dans le forum Scilab
    Réponses: 3
    Dernier message: 07/03/2021, 11h24
  2. API Win32 : Erreur d'affichage de texte avec TextOut
    Par anezvox1 dans le forum Windows
    Réponses: 2
    Dernier message: 10/09/2014, 18h11
  3. Afficher du texte avec des elements graphique (HTML?)
    Par E LABOUREAU dans le forum Windows Forms
    Réponses: 0
    Dernier message: 02/05/2009, 19h50
  4. Texte en transparence avec TextOut
    Par TigreRouge dans le forum MFC
    Réponses: 2
    Dernier message: 06/06/2005, 23h57
  5. Réponses: 4
    Dernier message: 16/01/2003, 16h30

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