Quelle est la famille de polices par défaut d'une application WPF?
Quelle est la famille de polices par défaut d'une application WPF? Ce système est-il dépendant? J'ai trouvé Tahoma sur mon système.
Si je crée un contrôle alors quelle sera la fontfamily par défaut de control est définie?
3 réponses
La police "par défaut" est la police système actuelle de votre système d'exploitation actuel. Tahoma est la police système par défaut de Windows XP, sur Vista, Windows 7 C'est Segoe UI.
Sur Windows 8, Il semble que la police de secours soit Segoe UI avec une ligne de base 0.9 et un espacement de ligne 1.2.
<Page
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:clr="clr-namespace:System;assembly=mscorlib">
<Page.Resources>
<clr:String x:Key="someText">The quick brown fox, ABCD, 1234567890, /@#</clr:String>
<SolidColorBrush x:Key="lightColor">#bbbbbb</SolidColorBrush>
<SolidColorBrush x:Key="darkColor">#000000</SolidColorBrush>
<FontFamily x:Key="default">non existent font</FontFamily>
<FontFamily x:Key="segoe">Segoe UI</FontFamily>
<FontFamily x:Key="segoe_base" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/composite-font"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:s="clr-namespace:System;assembly=mscorlib"
Baseline="0.9"
LineSpacing="1.2">
<FontFamily.FamilyNames>
<s:String x:Key="en-US" >Baseline Segoe UI</s:String>
</FontFamily.FamilyNames>
<FontFamily.FamilyMaps>
<FontFamilyMap Target="Segoe UI" />
</FontFamily.FamilyMaps>
</FontFamily>
</Page.Resources>
<StackPanel Margin="10" Width="250">
<TextBlock TextWrapping="Wrap">Segoe UI with a baseline of 0.9 and line spacing of 1.2 lines up with the default font</TextBlock>
<Grid Margin="5">
<TextBlock Foreground="{StaticResource darkColor}" TextWrapping="Wrap" FontSize="20" FontFamily="{StaticResource default}" Text="{StaticResource someText}"/>
<TextBlock Foreground="{StaticResource lightColor}" TextWrapping="Wrap" FontSize="20" FontFamily="{StaticResource segoe_base}" Text="{StaticResource someText}"/>
</Grid>
<TextBlock Margin="0,10,0,0" TextWrapping="Wrap">Segoe UI with the default baseline and line spacing does not line up with the default font</TextBlock>
<Grid Margin="5">
<TextBlock Foreground="{StaticResource darkColor}" TextWrapping="Wrap" FontSize="20" FontFamily="{StaticResource default}" Text="{StaticResource someText}"/>
<TextBlock Foreground="{StaticResource lightColor}" TextWrapping="Wrap" FontSize="20" FontFamily="{StaticResource segoe}" Text="{StaticResource someText}"/>
</Grid>
</StackPanel>
</Page>
Vous pouvez le prendre à partir de la valeur par défaut de DependencyProperty
. Par exemple, vous créez un contrôle personnalisé, qui sera draw text en utilisant DrawingContext et que vous voulez définir la valeur par défaut pour FontFamily, vous pouvez déclarer DependencyProperty
de cette façon:
public static readonly DependencyProperty FontFamilyProperty = DependencyProperty.Register(nameof(FontFamily), typeof(FontFamily), typeof(MyControl), new FrameworkPropertyMetadata(TextBlock.FontFamilyProperty.DefaultMetadata.DefaultValue, FrameworkPropertyMetadataOptions.AffectsRender));
public FontFamily FontFamily
{
get => (FontFamily)GetValue(FontFamilyProperty);
set => SetValue(FontFamilyProperty, value);
}