70 votes

Comment inclure une police externe dans une application WPF sans l'installer ?

Comment inclure une police externe dans une application WPF sans l'installer ?

J'ai essayé ce code

  System.Drawing.Text.PrivateFontCollection privateFonts = new    System.Drawing.Text.PrivateFontCollection();
  privateFonts.AddFontFile("C:\\Documents and Settings\\somefont.ttf");
  System.Drawing.Font font = new Font(privateFonts.Families[0], 12);
  this.label1.Font = font;

Il fonctionne correctement dans Windows Form Application mais pas dans WPF.

4voto

Tharindu Points 81

J'utilise xaml pour cela

<Window

 FontFamily ="./Fonts/#somefont"

>

J'ai inclus le fichier de la police dans le dossier "Fonts".

3voto

Moslem Shahsavan Points 388

Premièrement) Copiez les polices dans le dossier du projet comme /Resources/Fonts/ et définir les propriétés de la police -> Construire l'action : Ressource

Deuxièmement) Utilisé sur le code

FontFamily="/AssemblyNamespace;component/Resources/Fonts/IranSans/#IRANSansWeb Medium"

enter image description here

2voto

Steve Parish Points 389

J'ai un dossier de polices dans un dossier d'actifs dans mon projet. Au moment de la construction, ces polices seront copiées dans le dossier en tant que contenu. Ensuite, je peux simplement utiliser le XAML suivant pour utiliser la police FontAwesome afin d'avoir une icône sur mon bouton.

<Button Content="&#xf0c9;" FontFamily="./assets/fonts/#FontAwesome">

2voto

DAkbariSE Points 163

Vous devez ajouter les polices comme élément de ressource

selon le lien vous pouvez ajouter la police de votre choix comme fichier de ressources de l'application en suivant les étapes suivantes :

  1. copiez votre fichier de police n'importe où dans votre projet dans la plupart des cas, les fichiers de ressources sont copiés dans un dossier nommé "ressources" si vous voulez suivre cette procédure, créez un nouveau dossier dans votre projet et nommez-le "ressources" puis copiez votre fichier de police qui est généralement au format ttf ou otf dans ce dossier.

  2. vous devez alors déclarer ce fichier comme un fichier de ressources. Pour ce faire, vous avez deux possibilités :

    1. Cliquez avec le bouton droit de la souris sur votre fichier de police, sélectionnez Propriétés (ou appuyez sur F4 après l'avoir sélectionné). et modifiez ensuite "Construire l'action" a "Ressource"
    2. allez dans votre répertoire de projets, éditez project-name.csproj et la balise balise suivante :

      <ItemGroup>            
          <Resource Include="resources\<font-file-name>.ttf" />  
      </ItemGroup>```

enfin, dans votre application, vous pouvez définir la propriété font-family comme ceci :

FontFamily="./Resources/Fonts/#<font-name>"

Attention, "font-name" est différents à partir de font-file-name vous pouvez ouvrir le fichier de police et vérifier la propriété du nom de la police (dans Microsoft Window)

fetching font name by opening font file

2voto

nrod Points 328

Bien que la solution de @movgp0 ait fonctionné au début, elle a échoué lorsque j'ai voulu une Gras texte. En cherchant un peu plus sur Internet, j'ai trouvé la solution suivante qui fonctionne dans tous les cas :

<Application.Resources>
  <FontFamily x:Key="FiraSansBold">Fonts/FiraSansCondensed-Bold.ttf#Fira Sans Condensed</FontFamily>
  <FontFamily x:Key="FiraSansBoldItalic">Fonts/FiraSansCondensed-BoldItalic.ttf#Fira Sans Condensed</FontFamily>
  <FontFamily x:Key="FiraSansItalic">Fonts/FiraSansCondensed-Italic.ttf#Fira Sans Condensed</FontFamily>
  <FontFamily x:Key="FiraSans">Fonts/FiraSansCondensed-Regular.ttf#Fira Sans Condensed</FontFamily>
</Application.Resources>

Utilisation : <Label FontFamily="{StaticResource FiraSansBold}">SomeBoldedLabel</Label>

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X