VB
.NET - Exibindo as fontes instaladas no sistema
Como exibir as fontes instaladas no sistema ?
Elementar, apenas crie uma nova instância da classe System.Drawing.Text.InstalledFontCollection que contém uma coleção dos objetos FontFamily que representam todas as fontes instaladas no sistema.
A classe InstalledFontCollection permite que você obtenha informações sobre as fontes atualmente instaladas através da propriedade Familes. Esta propriedade é fornecida pela classe abstrata FontCollection da qual deriva a classe InstalledFontCollection.
Não use a classe InstalledFontCollection para instalar uma fonte para o Windows. Em vez disso, use a função GDIAddFontResource. Um objeto InstalledFontCollection vê apenas fontes que são instaladas no Windows antes que o objeto seja criado.
Vejamos a seguir um exemplo que mostra como obter as fontes instaladas.
Abra o Visual Basic 2008 Express Edition e crie um novo projeto do tipo Windows Application com o nome fontesInstaladas:
![]() |
Notou que eu estou usando o VB 2008 Express em Português ???
Isso mesmo !!! você pode portar o Visual Studio 2008 e as versões Express para o idioma Português. Baixe o pacote para tradução em :
http://msdn.microsoft.com/pt-br/express/default.aspx
Agora você não pode mais alegar que tem dificuldades com a língua para aprender Vb usando as versões Express que são gratuitas e estão agora traduzidas para o Português.
No formulário padrão form1.vb inclua um controle Panel e um controle Button conforme o leiaute abaixo:
![]() |
Vamos definir os seguintes namespaces usados no projeto:
Imports System Imports System.Drawing Imports System.Windows.Forms Imports System.Drawing.Text |
No evento Click do botão de comando inclua o código abaixo que já esta comentado:
Private Sub btnCarregarFontes_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnCarregarFontes.Click
' Cria a coleção de Fontes
Using fontFamilies As New InstalledFontCollection
' Efetua a iteração sbre todas as familias de fontes
Dim offset As Integer = 10
For Each family As FontFamily In fontFamilies.Families
Try
' Cria uma label que irá exibir o texto da fonte
Dim fontLabel As New Label
fontLabel.Text = family.Name
fontLabel.Font = New Font(family, 14)
fontLabel.Left = 10
fontLabel.Width = pnlFonts.Width
fontLabel.Top = offset
' Inclui a label no controle Panel
pnlFonts.Controls.Add(fontLabel)
offset += 30
Catch ex As ArgumentException
' Uma exceção ArgumentException será lançada se a fonte selecionada
' não susportar o estilo regular(o padrão quando da criação do objeto font)
Dim fontLabel As New Label
fontLabel.Text = ex.Message
fontLabel.Font = New Font("Arial", 10, FontStyle.Italic)
fontLabel.ForeColor = Color.Red
fontLabel.Left = 10
fontLabel.Width = 500
fontLabel.Top = offset
' inclui a labe no Panel.
pnlFonts.Controls.Add(fontLabel)
offset += 30
End Try
Next
End Using
End Sub
|
Abaixo temos o mesmo código em C#:
' Cria a coleção de Fontes
Using fontFamilies As New InstalledFontCollection
' Efetua a iteração sbre todas as familias de fontes
Dim offset As Integer = 10
For Each family As FontFamily In fontFamilies.Families
Try
' Cria uma label que irá exibir o texto da fonte
Dim fontLabel As New Label
fontLabel.Text = family.Name
fontLabel.Font = New Font(family, 14)
fontLabel.Left = 10
fontLabel.Width = pnlFonts.Width
fontLabel.Top = offset
' Inclui a label no controle Panel
pnlFonts.Controls.Add(fontLabel)
offset += 30
Catch ex As ArgumentException
' Uma exceção ArgumentException será lançada se a fonte selecionada
' não susportar o estilo regular(o padrão quando da criação do objeto font)
Dim fontLabel As New Label
fontLabel.Text = ex.Message
fontLabel.Font = New Font("Arial", 10, FontStyle.Italic)
fontLabel.ForeColor = Color.Red
fontLabel.Left = 10
fontLabel.Width = 500
fontLabel.Top = offset
' inclui a label no Panel.
pnlFonts.Controls.Add(fontLabel)
offset += 30
End Try
Next
End Using
|
Executando o projeto iremos obter:
![]() |
A seguir vamos usar os mesmos recursos para criar uma aplicação que exibe as fontes instaladas e permite a configuração de algumas de suas propriedades como tamanho e tipo e estilo.
Crie uma nova aplicação no Visual Basic 2008 Express Edition do tipo Windows Application com o nome exibirFontes;
Declare o seguinte namespace no projeto: Imports System.Drawing.Text
A seguir no formulário padrão form1.vb inclua os seguintes controles : ListBox, TextBox e CheckBox conforme o leiaute abaixo:
![]() |
No evento Load do formulário vamos carregar as fontes instaladas e exibi-las no controle ListBox - lstFonte , usando o código abaixo:
' carrega a lista de fontes.
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Dim fontes_instaladas As New InstalledFontCollection
lstFonte.Items.Clear()
For Each fonte_familia As FontFamily In fontes_instaladas.Families
lstFonte.Items.Add(fonte_familia.Name)
Next fonte_familia
lstFonte.SelectedIndex = 0
End Sub
|
Se o usuário alterar o valor do tamanho da fonte no TextBox - txtTamanho - vamos exibir a fonte no novo tamanho chamando a rotina exibirFonte():
' ao selecionar uma nova fonte muda a fonte.
Private Sub txtTamanho_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles txtTamanho.TextChanged, _
chkBold.Click, chkItalic.Click, chkUnderline.Click, chkStrikeout.Click, lstFonte.SelectedIndexChanged
exibirFonte()
End Sub
|
Na rotina a seguir estamos exibindo a fonte e verificando se houve a seleção de algum controle CheckBox para aplicar o estilo marcado:
' Exibe a fonte selecionada.
Private Sub exibirFonte()
' Compoõe o estilo da fonte
Dim estilo_fonte As FontStyle = FontStyle.Regular
If chkBold.Checked Then estilo_fonte = estilo_fonte Or FontStyle.Bold
If chkItalic.Checked Then estilo_fonte = estilo_fonte Or FontStyle.Italic
If chkUnderline.Checked Then estilo_fonte = estilo_fonte Or FontStyle.Underline
If chkStrikeout.Checked Then estilo_fonte = estilo_fonte Or FontStyle.Strikeout
' Obtem o tamanho da fonte
Dim tamanho_fonte As Single = 8
Try
tamanho_fonte = Single.Parse(txtSize.Text)
Catch ex As Exception
End Try
' Obtem a familia da fonte
Dim familia_nome As String = "Times New Roman"
If Not (lstFonte.SelectedItem Is Nothing) Then
familia_nome = lstFonte.SelectedItem.ToString
End If
' Cria a nova fonte
Dim nova_fonte As New Font(familia_nome, tamanho_fonte, estilo_fonte)
' define a fonte
txtFonte.Font = nova_fonte
End Sub
|
Executando o projeto e marcando algumas opções temos:
![]() |
E dessa forma podemos tratar as fontes instaladas usando o VB .NET.
Para saber mais:
A classe Font define um formato particular para o texto tal como o tipo da fonte, tamanho e atributos de estilo.
Para criar uma fonte podemos usar o construtor font e inicializar uma nova instância da classe fonte com os atributos especificados:
public Sub Font(string, float)
A declaração abaixo Inicializa uma nova instância da classe Font para a Fonte e o estilo especificado.
Public
Sub Font(ByVal Font, ByVal FontStyle)onde FontStyle é uma enumeração o qual inclui os valores : Bold, Italic, Regular, StrikeOut, e Underline.
Vejamos um exemplo a seguir:
Dim
g As Graphics
Dim
font As New Font("Times
New Roman", 26)
A seguir temos uma lista das propriedades mais usadas:
| Bold | Obtém um valor que indica se a fonte é bold.(negrito) |
| FontFamily | Obtém a FontFamily da fonte. |
| Height | Obtém a altura da fonte |
| Italic | Obtém a valor que indica se a fonte é Italic. |
| Name | Obtém o nome da face fonte |
| Size | Obtém o tamanho da fonte. |
| SizeInPoints | Obtém o tamanho, em points , da fonte. |
| Strikeout | Obtém um valor que indica se a fonte é strikeout. |
| Style | Obtém a informação do estilo da fonte; |
| Underline | Obtém um valor indicando se a fonte é sublinhada(underlined) |
| Unit | Obtém a unidade de medida da fonte. |
Pegue o projeto completo aqui: fontesInstaladas.zip / exibirFontes.zip
Eu sei é apenas VB .NET, mas eu
gosto...![]()
José Carlos Macoratti