0

2つのコンボボックス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

たとえば、フォント名を選択した場合。モノタイプCorsivaフォントには、イタリックとイタリックの太字フォントスタイルのみがあります

簡単に言うと、フォントスタイルはフォントごとに異なるため、combobox1で選択したフォントに関連するフォントスタイルを取得する必要があります。

4

1 に答える 1

0

これらのフォント名は、後のタイポグラフィで使用できる追加のフォントスタイル、特にOpenTypeで追加されたスタイルから合成されます。それらは、古いGDIスタイルに不完全にマッピングされます。使用されているトリックは、ファミリ名をMonotypeから「MonotypeCorsiva」に変更することです。これは、イタリック(「筆記体」)スタイルのみが使用可能であることを強く示唆しています。同じ種類のマッピングトリックが、「Semibold」や「Condense」などのさまざまな追加された太字のスタイルとピッチに使用されます。

コード内のフォントを選択するために使用できるのはFontStyle列挙体しかないため、FontFamily.IsStyleAvailable()メソッドを使用して、マップされているスタイルを確認すると、問題なく機能するはずです。FontDialogクラスと同じように、フォントがどのように見えるかをユーザーにプレビューしてもらいたいので、最終結果についてほとんど混乱することはありません。一般的にFontDialogを支持してください。

于 2012-11-20T14:12:40.270 に答える