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

Windows Presentation Foundation Discussion :

Police de caractères introuvable


Sujet :

Windows Presentation Foundation

  1. #1
    Futur Membre du Club
    Homme Profil pro
    amateur
    Inscrit en
    Octobre 2013
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : amateur

    Informations forums :
    Inscription : Octobre 2013
    Messages : 13
    Points : 7
    Points
    7
    Par défaut Police de caractères introuvable
    Bonjour à tous,


    Je me heurte à un pb avec les fonts sous WPF. Je construis une image contenant des graphiques et des chaines de caractères.
    Une de ces chaines utilise une police propriétaire installée sur Seven comme n'importe quelle autre police.

    J'utilise la classe Font de System.Drawing pour construire ma police. Mais elle n'est pas disponible et je ne sais pas pourquoi.

    Si je liste les polices avec :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    System.Windows.Media.Fonts.SystemFontFamilies
    je trouve bien ma police dans la liste retournée.

    Mais si j'utilise
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     System.Drawing.Font.Text.InstalledFontCollection
    ma police n’apparaît pas.

    Or, je dessine mon texte avec :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Font _FCanPro = new System.Drawing.Font("Clan Pro", 12, System.Drawing.FontStyle.Regular, GraphicsUnit.Point);
     
    g.DrawString(_LineTitle, _FCanPro, new SolidBrush(System.Drawing.Color.Black), xPos, 68);
    Mais c'est une police par défaut qui est retournée.

    Alors ma question est : pourquoi Wpf n'a pas ma nouvelle police ?

    Par contre, si je crée un contrôle Text dans le code xaml utilisant cette police, c'est bien elle qui est affichée

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
                <Label Content="Sign/Kit" HorizontalAlignment="Left" Margin="139,42,0,0" VerticalAlignment="Top" FontFamily="Clan Pro" FontWeight="Bold"/>
    Bref, j'ai besoin d'un petit coup de main.


    En vous remerciant,


    Pendloup

  2. #2
    Expert confirmé
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2009
    Messages
    2 032
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Novembre 2009
    Messages : 2 032
    Points : 5 476
    Points
    5 476
    Par défaut
    Sur mon seven il n'y a pas de "Clan Pro" donc déjà fait gaffe s'il s'agit d'une appli redistribuable.
    Ensuite une des différences entre System.Drawing.Font.Text.InstalledFontCollection et System.Windows.Media.Fonts.SystemFontFamilies c'est que wpf gère les .otf et pas winform.
    Du coup si ta police est du .otf il me semble normal qu'elle apparaisse dans un mais pas dans l'autre.

  3. #3
    Futur Membre du Club
    Homme Profil pro
    amateur
    Inscrit en
    Octobre 2013
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : amateur

    Informations forums :
    Inscription : Octobre 2013
    Messages : 13
    Points : 7
    Points
    7
    Par défaut
    Bonjour micka132,

    Tout d'abord, merci pour ta contribution. Cette police est tout à fait <honnête>. Pas de pb de ce côté.
    C'est effectivement un otf. Le fichier est ClanPro-Bold.otf.
    Je ne connaissais pas cette différence entre WPF et winform.

    Du coup, je viens de faire une recherche là-dessus qui confirme que WPF ne prend pas en charge les fonts otf.

    Voici mon code plus complet :

    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
     
               using System.Drawing;
               using System.Drawing.Text;
    ...
     
                String PathImage = System.IO.Path.Combine(_LogoPath, "CardRectoSsTitre.tif");
                System.Drawing.Image img = System.Drawing.Image.FromFile(PathImage); 
                Graphics g = Graphics.FromImage(img);
                int xPos = 397;// 353;
     
                try
                {
     
                    Font _FCanPro = new System.Drawing.Font("Clan Pro", 12, System.Drawing.FontStyle.Regular, GraphicsUnit.Point);
     
                    g.DrawString(_LineTitle, _FCanPro, new SolidBrush(System.Drawing.Color.Black), xPos, 68);
     
    ...
    Donc, y a-t'il une solution pour utiliser cette police, à part la convertir en ttf, ou bien dois-je tout reprendre en Winform ?

    Cordialement,

    Pendloup.

  4. #4
    Expert confirmé
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2009
    Messages
    2 032
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Novembre 2009
    Messages : 2 032
    Points : 5 476
    Points
    5 476
    Par défaut
    Citation Envoyé par Pendloup Voir le message
    Bonjour micka132,

    Tout d'abord, merci pour ta contribution. Cette police est tout à fait <honnête>. Pas de pb de ce côté.
    C'est effectivement un otf. Le fichier est ClanPro-Bold.otf.
    Je ne connaissais pas cette différence entre WPF et winform.

    Du coup, je viens de faire une recherche là-dessus qui confirme que WPF ne prend pas en charge les fonts otf.


    Donc, y a-t'il une solution pour utiliser cette police, à part la convertir en ttf, ou bien dois-je tout reprendre en Winform ?

    Cordialement,

    Pendloup.
    Euh en fait c'est l'inverse ! Avec WPF tu peux utiliser les .otf : c'est pour ca que dans une TextBox cela fonctionne. Dans ton lien il s'agit d'un problème de nommage de la police.
    Par contre ton code est déjà assimilé à du winform.
    C'est pas tout à fait exacte mais disons que les librairies que tu utilises date de winform et qui se base sur GDI+ (c'est lui qui prends pas en compte les fonts OTF).
    L'équivalent "en wpf" serait d'utiliser la classe DrawingContext et la méthode DrawText : ici un exemple qui se rapproche de ton besoin :
    https://social.msdn.microsoft.com/Fo...type?forum=wpf

  5. #5
    Futur Membre du Club
    Homme Profil pro
    amateur
    Inscrit en
    Octobre 2013
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : amateur

    Informations forums :
    Inscription : Octobre 2013
    Messages : 13
    Points : 7
    Points
    7
    Par défaut
    Ouppsss ! Tu viens de m'enlever les peaux de banane. Tout s'éclaire du coup.
    Je vais donc reprendre mon code.

    Merci à toi.

    Je reviendrais pour dire que ça marche.

    Pendloup

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

Discussions similaires

  1. [MFC] Comment personnaliser sa police de caractères ?
    Par Guybrush113 dans le forum MFC
    Réponses: 11
    Dernier message: 26/05/2004, 07h29
  2. Police de caractère
    Par AlDum dans le forum C++Builder
    Réponses: 5
    Dernier message: 08/11/2003, 00h21
  3. [API Windows] Polices de caractères disponibles
    Par bebeours dans le forum C++Builder
    Réponses: 3
    Dernier message: 05/11/2003, 08h28
  4. Polices de caractères sous Windows
    Par goto dans le forum API, COM et SDKs
    Réponses: 24
    Dernier message: 04/11/2003, 15h50
  5. Adresse des polices de caractères dans la RAM video ?
    Par Anonymous dans le forum x86 16-bits
    Réponses: 5
    Dernier message: 27/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