从一位前辈博客中看到的,学习并记录下。
是用wpf制作的,就是将系统的字体都显示出来,并可以选择。
前端代码:
<Window x:Class="字体选择器.MainWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:local="clr-namespace:字体选择器" mc:Ignorable="d" Title="MainWindow" Height="350" Width="525"> <Grid ShowGridLines="True"> <Grid.RowDefinitions> <RowDefinition Height="*"></RowDefinition> <RowDefinition Height="*"></RowDefinition> <RowDefinition Height="*"></RowDefinition> <RowDefinition Height="2*"></RowDefinition> </Grid.RowDefinitions> <Grid.ColumnDefinitions> <ColumnDefinition/> <ColumnDefinition/> </Grid.ColumnDefinitions> <ComboBox HorizontalAlignment="Center" MinWidth="200" Name="cbxfonts" SelectionChanged="fonts_SelectionChanged" Grid.ColumnSpan="2" MinHeight="30" Margin="20"></ComboBox> <TextBlock Grid.Row="1">中文预览:</TextBlock> <TextBlock Grid.Row="2" FontFamily="{Binding Path=FontFamily,ElementName=text}" FontSize="25">你选择的字体</TextBlock> <TextBlock Grid.Row="1" Grid.Column="2" >英文预览:</TextBlock> <TextBlock Grid.Row="2" Grid.Column="2" FontSize="25" FontFamily="{Binding Path=FontFamily,ElementName=text}">You Selected Font</TextBlock> <Border Grid.ColumnSpan="2" Grid.Row="3"> <DockPanel> <TextBlock DockPanel.Dock="Top">字体详细信息:</TextBlock> <StackPanel> <StackPanel Orientation="Horizontal"> <TextBlock>字体名称:</TextBlock> <TextBox Text="{Binding ElementName=text,Path=FontFamily}" Name="text"></TextBox> </StackPanel> </StackPanel> <Button HorizontalAlignment="Center" VerticalAlignment="Bottom" DockPanel.Dock="Bottom"> <Button.Style> <Style> <Style.Triggers> <Trigger Property="Button.IsMouseOver" Value="True"> <Setter Property="Button.Foreground" Value="Blue"></Setter> </Trigger> <Trigger Property="Button.IsMouseOver" Value="False"> <Setter Property="Button.Foreground" Value="Black"></Setter> </Trigger> </Style.Triggers> </Style> </Button.Style> <Button.Template> <ControlTemplate> <TextBlock > <Underline>关注我的新浪微博</Underline> </TextBlock> </ControlTemplate> </Button.Template> </Button> </DockPanel> </Border> </Grid> </Window>
后端代码:
using System.Windows; using System.Windows.Controls; using System.Windows.Markup; using System.Windows.Media; namespace 字体选择器 { /// <summary> /// MainWindow.xaml 的交互逻辑 /// </summary> public partial class MainWindow : Window { public MainWindow() { InitializeComponent(); foreach (FontFamily _f in Fonts.SystemFontFamilies) { string _fontName = null; LanguageSpecificStringDictionary _fontDic = _f.FamilyNames; if (_fontDic.ContainsKey(XmlLanguage.GetLanguage("zh-cn"))) { if (_fontDic.TryGetValue(XmlLanguage.GetLanguage("zh-cn"), out _fontName)) { cbxfonts.Items.Add(_fontName); } } else { if (_fontDic.TryGetValue(XmlLanguage.GetLanguage("en-us"), out _fontName)) { cbxfonts.Items.Add(_fontName); } } } } private void fonts_SelectionChanged(object sender, SelectionChangedEventArgs e) { text.FontFamily = new FontFamily(cbxfonts.SelectedItem.ToString()); } } }