fontdialog在哪里获得字体样式列表?
FontStyles仅包含Normal,Oblique和Italic。 然而,通过各种字体的字体样式,有以下组合:中,轻,黛米,粗体,罗马,窄,重,cond ......等等。
Arial的fontdialog显示:
窄斜体, 斜体, 定期, 窄大胆, 窄粗斜体, 胆大, 加粗斜体, 黑色, 黑斜率
他们从哪里获取此列表?其中一些名字似乎没有出现在任何地方。 是否有一些FamilyTypeface重量,样式和拉伸组合的列表,其他具有其他指定的名称或什么?
感谢您的帮助!
答案 0 :(得分:3)
对于系统字体,您可以获得FontFamily
的{{3}}列表。字体本身具有重量,样式,拉伸等属性的所有细节。
<Grid Margin="20">
<Grid.RowDefinitions>
<RowDefinition />
<RowDefinition Height="100" />
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition />
<ColumnDefinition />
</Grid.ColumnDefinitions>
<ListBox x:Name="fontSelector"
ItemsSource="{x:Static Fonts.SystemFontFamilies}" />
<ListBox x:Name="typefaceSelector"
ItemsSource="{Binding SelectedItem.FamilyTypefaces, ElementName=fontSelector}" DisplayMemberPath="AdjustedFaceNames[en-US]"
Grid.Column="1" />
<TextBlock FontFamily="{Binding SelectedItem.Source, ElementName=fontSelector}"
FontStretch="{Binding SelectedItem.Stretch, ElementName=typefaceSelector}"
FontStyle="{Binding SelectedItem.Style, ElementName=typefaceSelector}"
FontWeight="{Binding SelectedItem.Weight, ElementName=typefaceSelector}"
Grid.ColumnSpan="2" Grid.Row="1"
Text="Sample"
FontSize="30"
HorizontalAlignment="Center"
VerticalAlignment="Center" />
</Grid>
要在WPF中进一步扩展此列表,您可以使用win-forms中的InstalledFontCollection
来获取已安装字体的列表,并将它们转换为WPF字体类型。
var installedFontCollection = new System.Drawing.Text.InstalledFontCollection();
// Get the array of FontFamily objects.
var fontFamilies = installedFontCollection.Families;
foreach(var fontFamily in fontFamilies)
{
var mfont = new FontFamily(fontFamily.Name);
fontSelector.Items.Add(mfont);
}