0

我有两个组合框combobox1和combobox2我在combobox1中获取所有系统字体我需要在combobox2中获取选择字体的字体样式

 Dim fc As New Drawing.Text.InstalledFontCollection
    Dim ff As FontFamily() = fc.Families()
    For Each family As FontFamily In ff
        Me.ComboBox1.Items.Add(family.Name)
    Next

当我为例如选择字体名称时。Monotype Corsiva 字体只有斜体和斜体粗体字体样式

简而言之,我需要获取与我在 combobox1 中选择的字体相关的字体样式,因为不同字体的字体样式不同

4

1 回答 1

0

这些字体名称是从添加的字体样式合成的,这些样式在以后的排版中可用,尤其是在 OpenType 中添加的样式。它们不完美地映射回旧的 GDI 样式。您看到的技巧是将家族名称从 Monotype 修改为“Monotype Corsiva”,这强烈暗示只有斜体(“草书”)样式可用。相同类型的映射技巧用于各种添加的粗体样式和音高,例如“Semibold”和“Condense”等名称。

由于您只有 FontStyle 枚举可用于在代码中选择字体,因此使用 FontFamily.IsStyleAvailable() 方法检查映射的样式应该可以正常工作。您将希望向用户提供字体外观的预览,就像 FontDialog 类所做的那样,因此对最终结果几乎没有混淆。一般都支持 FontDialog。

于 2012-11-20T14:12:40.270 回答