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 :

DirectX (2D) Fonts et Delphi


Sujet :

Composants VCL Delphi

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti Avatar de Jacques Deyrieux
    Homme Profil pro
    Directeur de projet
    Inscrit en
    Octobre 2002
    Messages
    27
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Directeur de projet
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2002
    Messages : 27
    Par défaut DirectX (2D) Fonts et Delphi
    Bonjour,

    Je souhaite exploiter un police TTF qui possède un pas variable avec un pas fixe. En cherchant j'ai trouvé que que DirectX pouvait le faire. C'est pourquoi je me tourne vers cette solution. (en plus d'une gestion plus fine de la proportionnalité de la taille de la police). (Font.Options.Kerning )
    Enfin après maintes recherches, je me suis arrêté sur Asphyre qui me paraît proposer une bibliothèques de classes très complètes et surtout accessible gratuitement.

    J'ai essayé d'exploiter par moi-même les polices de ma machine par l'intermédiaire de leurs objets (voir tuto de Pédro) mais avec un succès mitigé : je n'arrive pas à afficher des messages avec des polices différentes sur le même canevas.

    Afin de décrire mes essais, j'ai travaillé uniquement la partie III.C Hello World dans laquelle j'ai fait:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    procedure TMainFrm.FormCreate(Sender: TObject);
    ...
    DefDevice.SysFonts.CreateFont('sys:arial', 'arial', 9, False, fwtHeavy,
        fqtClearType, fctAnsi);
    ...
    et

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    procedure TMainFrm.RenderCallback(Sender: TAsphyreDevice; Tag: TObject);
    begin
      Sender.SysFonts.Font['sys:tahoma'].TextOut('Hello world!',
        4, 10, $FFFFFFFF);
     
      Sender.SysFonts.Font['sys:arial'].TextOut('Hello world!',
        4, 30, $FFFFFFFF);
     
    end;
    Et là ... c'est toujour la même police qui est employée.


    Mes questions sont les suivantes:

    -> ai-je la bonne démarche avec la bibliothèque Asphyre pour le résultat que je souhaite obtenir ?
    -> Où puis-je trouver une documentation sur les fonctions / classes implémentées par Asphyre ?
    -> Comment puis-je manipuler des polices différentes ?

    merci pour votre aide

    Jacques

  2. #2
    Rédacteur
    Avatar de Pedro
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    5 411
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 5 411
    Par défaut
    Salut
    Citation Envoyé par Jacques Deyrieux Voir le message
    -> ai-je la bonne démarche avec la bibliothèque Asphyre pour le résultat que je souhaite obtenir ?
    Non
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    procedure TMainFrm.FormCreate(Sender: TObject);
    ...
    DefDevice.SysFonts.CreateFont('sys:arial', 'arial', 9, False, fwtHeavy,
        fqtClearType, fctAnsi);
    ...
    Cette méthode sert à créer une police depuis une police système. Son nom sera 'sys:arial' (mais ça peut être 'Tartempion' ) et sera issu de la police 'arial'. Si tu veux utiliser Tahoma, il te faut recréer une autre police à partir de Tahoma, soit:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
      DefDevice.SysFonts.CreateFont('sys:tahoma', 'tahoma', 9, False, fwtHeavy,
        fqtClearType, fctAnsi);
    Et normalement, ce code fonctionnera:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    procedure TMainFrm.RenderCallback(Sender: TAsphyreDevice; Tag: TObject);
    begin
      Sender.SysFonts.Font['sys:tahoma'].TextOut('Hello world!',
        4, 10, $FFFFFFFF);
     
      Sender.SysFonts.Font['sys:arial'].TextOut('Hello world!',
        4, 30, $FFFFFFFF);
     
    end;
    Note que SysFonts.Font[].TextOut sert à afficher uniquement des polices créées depuis des polices système. La méthode d'écriture des polices à base d'image est légèrement différente.
    Citation Envoyé par Jacques Deyrieux Voir le message
    -> Où puis-je trouver une documentation sur les fonctions / classes implémentées par Asphyre ?
    C'est malheureusement le point faible de ces composants: pas d'aide et très peu de docs. Personnellement, j'ai appris en manipulant les exemples fournis et en regardant le code des sources.
    Citation Envoyé par Jacques Deyrieux Voir le message
    -> Comment puis-je manipuler des polices différentes ?
    Comme tu as pu le voir, il existe 2 sortes de polices dans Asphyre. Celles créées à partir d'une police système et celles issues d'une image. Mais à chaque police différente, il faut créer une nouvelle police à l'initialisation.

    Bon courage
    Pedro
    Aucune réponse aux sollicitations techniques par MP

    Faut pas attendre d'en avoir besoin pour s'en servir... (Lucien Stéphane)

    Les pages Source C'est bon. Mangez-en!
    Le défi Delphi
    Règles du forum - FAQ Delphi - Pensez au chtit
    Aéroclub Bastia Saint-Exupéry

Discussions similaires

  1. [DirectX] DelphiX, ou une autre adaptation pour Delphi
    Par Nicodemus dans le forum Langage
    Réponses: 1
    Dernier message: 06/10/2005, 14h07
  2. [Delphi et DirectX] Tableau de vertices
    Par El-ToniO dans le forum DirectX
    Réponses: 9
    Dernier message: 07/05/2005, 14h19
  3. Editeur de MAP en delphi pour jeux directX
    Par PetitScorpion dans le forum DirectX
    Réponses: 5
    Dernier message: 09/07/2002, 18h47
  4. cours directx francais sur delphi
    Par charly dans le forum DirectX
    Réponses: 2
    Dernier message: 28/05/2002, 17h29

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