2013-04-08 4 views
0

я хочу извлечь информацию из установленных шрифтов, я пытался таким путем:Получение информации об установленных шрифтов

Private Function Get_Installed_Fonts() As Array 
    Dim AllFonts As New Drawing.Text.InstalledFontCollection ' Get the installed fonts collection. 
    Dim FontFamilies() As FontFamily = AllFonts.Families() ' Get an array of the system's font familiies. 
    Return FontFamilies ' Return the array 
End Function 

Тогда я могу сделать ...:

For Each Font As FontFamily In Get_Installed_Fonts() 
     MsgBox(Font.Name) 
    Next 

Но я могу Не нашли способ:

For Each Font As FontFamily In Get_Installed_Fonts() 
     MsgBox(Font.IsSystemFont) 
     MsgBox(Font.OriginalFontName) 
     MsgBox(Font.SizeInPoints) 
    Next 

Что мне там не хватает?

Это те вещи, которые я буду получать, и мне нужно тоже способ поиска, если установлен шрифт, например:

If FontsArray.contains("FontName") Then... 

ответ

1

Проблема заключается в том, что .IsSystemFont, .OriginalFontName, и. Свойства SizeInPoints являются членами класса Font, а не FontFamily. FontFamily используется для создания шрифта, и в этот момент вы можете использовать указанный выше язык для получения информации.

Таким образом, вы могли бы сделать ...

For Each FontFam As FontFamily In Get_Installed_Fonts() 
    Dim tFont as new Font(FontFam.Name, 8) 
    MsgBox(tFont.IsSystemFont) 
    MsgBox(tFont.OriginalFontName) 
    MsgBox(tFont.SizeInPoints) 
    'tFont = nothing 
Next 
+0

Не устанавливайте переменные Ничего подобного, что в .Net. Раньше это было необходимо в эпоху vb6, но для сборщика мусора .Net он не оказывает никакого влияния или оказывает негативное влияние на сбор памяти. –

+0

Отмечено и прокомментировано. Thx – APrough

+0

Спасибо за ответ! – ElektroStudios

1
Private Function Get_Installed_Fonts() As FontFamily() 
    Using AllFonts As New Drawing.Text.InstalledFontCollection 
     Return AllFonts.Families 
    End Using 
End Function 
+0

К сожалению, сначала я неправильно понял вопрос. Я думал об удалении моего ответа, но я думаю, что я оставлю код, потому что у него все еще есть несколько улучшений по сравнению с тем, что вы делаете прямо сейчас. –

+0

Большое спасибо за вашу модификацию функции – ElektroStudios

Смежные вопросы