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

Composants VCL Delphi Discussion :

Ecrire du texte selon un angle dans un TImage


Sujet :

Composants VCL Delphi

  1. #1
    kem
    kem est déconnecté
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 6
    Points : 6
    Points
    6
    Par défaut Ecrire du texte selon un angle dans un TImage
    Bonsoir

    J'aimerais écrire du texte dans un TImage selon un certain angle.
    Contrainte : j'ai déjà une image chargée dans le TImage. Je veux donc que le texte puisse se superposer à cette image avec un fond transparent

    Merci de votre aide.

  2. #2
    Membre éprouvé
    Avatar de neilbgr
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Août 2004
    Messages
    651
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2004
    Messages : 651
    Points : 1 177
    Points
    1 177
    Par défaut
    Après une recherche avec

    j'ai trouvé ceci :

    http://www.scalabium.com/faq/dct0002.htm :
    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 AngleTextOut(ACanvas: TCanvas; Angle, X, Y: Integer; Str: string);
    var
      LogRec: TLogFont;
      OldFontHandle,
      NewFontHandle: hFont;
    begin
      GetObject(ACanvas.Font.Handle, SizeOf(LogRec), Addr(LogRec));
      LogRec.lfEscapement := Angle*10;
      NewFontHandle := CreateFontIndirect(LogRec);
      OldFontHandle := SelectObject(ACanvas.Handle, NewFontHandle);
      ACanvas.TextOut(X, Y, Str);
      NewFontHandle := SelectObject(ACanvas.Handle, OldFontHandle);
      DeleteObject(NewFontHandle);
    end;
    ou encore :

    http://www.latiumsoftware.com/en/delphi/00046.php :
    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
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    interface
     
    uses Windows;
     
    function CreateAngledFont(Font: HFont; Angle: Longint;
      Quality: byte = PROOF_QUALITY): HFont;
     
    implementation
     
    function CreateAngledFont(Font: HFont; Angle: Longint;
      Quality: byte): HFont;
    var
      FontInfo: TLogFontA;    // Font information structure
    begin
      // Get the information of the font passed as parameter
      if GetObject(Font, SizeOf(FontInfo), @FontInfo) = 0 then begin
        Result := 0;
        exit;
      end;
      // Set the angle
      FontInfo.lfEscapement := Angle;
      FontInfo.lfOrientation := Angle;
      // Set the quality
      FontInfo.lfQuality := Quality;
      // Create a new font with the modified information
      // The new font must be released calling DeleteObject
      Result := CreateFontIndirect(FontInfo);
    end;
     
    procedure TextOutA(Canvas: TCanvas; X, Y, Angle: Integer;
      Text: string);
    var
      OriginalFont, AngledFont: HFont;
    begin
      // Create an angled font from the current font
      AngledFont := CreateAngledFont(Canvas.Font.Handle, Angle);
      if AngledFont <> 0 then begin
        // Set it temporarily as the current font
        OriginalFont := SelectObject(Canvas.Handle, AngledFont);
        if OriginalFont <> 0 then begin
          // Write the text
          Canvas.TextOut(X, Y, Text);
          // Restore the original font
          if SelectObject(Canvas.Handle, OriginalFont) = 0 then begin
            Canvas.Font.Handle := AngledFont;
            // raise Exception.Create('Couldn''t restore font');
            exit;
          end;
        end;
        // Release the angled font
        DeleteObject(AngledFont)
      end;
    end;
    "Si vous voulez être l’esclave des banques et payer pour financer votre propre esclavage, alors laissez les banquiers créer la monnaie" - Josiah Stamp, 1920, Gouverneur de la Banque d’Angleterre
    "Qui ne peut acheter ruine qui voudrait vendre" - Jacques Duboin.
    "Nous n'héritons pas la terre de nos parents, nous l'empruntons à nos enfants." - Antoine de Saint Exupéry

  3. #3
    kem
    kem est déconnecté
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 6
    Points : 6
    Points
    6
    Par défaut
    La seconde procedure (TextOutA) a parfaitement marché
    Merci

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

Discussions similaires

  1. Ecrire un texte selon l'heure
    Par CLeBeR dans le forum Langage
    Réponses: 4
    Dernier message: 05/03/2015, 19h19
  2. [Toutes versions] Remplir une zone texte selon le choix dans la liste déroulante
    Par ornans dans le forum InfoPath
    Réponses: 5
    Dernier message: 27/10/2014, 15h57
  3. Ecrire du texte d'un frame dans un autre frame
    Par da_latifa dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 01/10/2010, 08h31
  4. Ecrire du texte depuis une variable dans une vue
    Par Vlad_Oliv dans le forum MFC
    Réponses: 1
    Dernier message: 09/01/2007, 17h28
  5. comment ecrire du texte dans une window application
    Par gaut dans le forum Autres éditeurs
    Réponses: 2
    Dernier message: 16/07/2003, 10h23

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