.NET - Exibindo as fontes instaladas no sistema e usando fontes customizadas
Nesta dica eu vou mostrar como podemos exibir as fontes instaladas no sistema e como usar fontes de terceiros não instaladas, usando as linguagens VB .NET e C#. |
A classe InstalledFontCollection esta presente no namespace System.Drawing.Text, é uma classe que não pode ser herdada e contém a funcionalidade de representar as fontes instaladas no sistema local. Você pode usar essa classe e retornar um array contendo os nomes de todas as fontes em seu sistema.
A classe InstalledFontCollection herda da classe base abstrata FontCollection e você pode usar o objeto InstalledFontCollection para enumerar as fontes instaladas em seu computador.
Nota: Uma classe abstrata é uma classe que não pode ser instanciada e
funciona como uma classe base para outras classes.
A propriedade Families do objeto InstalledFontCollection é um array
de objetos FontFamily que representa uma família de fontes relacionadas
Recursos usados:
Criando o projeto no Visual Studio 2013 Express for windows desktop
Abra o VS 2013 Express for windows desktop e clique em New Project;
Selecione a linguagem Visual Basic e o template Windows Forms Application;
Informe o nome ListaFontesInstaladas e clique no botão OK;
Formulário principal do projeto form1.vb inclua os seguinte controles a partir da ToolBox:
1 Label - lblinfo
1 ListBox - lbFontes
1 Button - btnFontesInstaladas
Disponha os controles no formulário form1.vb conforme o leiaute abaixo:
Agora defina o seguinte namespace no formulário form1:
Imports System.Drawing.Text
A seguir inclua no evento Click do botão de comando - Carregar Fontes Instaladas - o código abaixo:
Imports System.Drawing.Text
Public Class Form1
Private Sub btnFontesInstaladas_Click(sender As Object, e As EventArgs) Handles btnFontesInstaladas.Click
Dim fontes As InstalledFontCollection = New InstalledFontCollection()
lblinfo.Text = fontes.Families.Count & " fontes instaladas"
Try
For Each font As FontFamily In fontes.Families
lbFontes.Items.Add(font.Name)
Next font
Catch ex As Exception
MessageBox.Show("Erro :" & ex.Message)
End Try
End Sub
End Class
|
A seguir temos a versão do código para a linguagem C# :
using System.Drawing.Text;
public class Form1
{
private void btnFontesInstaladas_Click(object sender, EventArgs e)
{
InstalledFontCollection fontes = new InstalledFontCollection();
lblinfo.Text = fontes.Families.Count + " fontes instaladas";
try {
foreach (FontFamily font in fontes.Families)
{
lbFontes.Items.Add(font.Name);
}
}
catch (Exception ex)
{
MessageBox.Show("Erro :" + ex.Message);
}
}
}
|
Executando o projeto iremos obter o seguinte resultado:
Usando uma fonte não instalada
Além das fontes instaladas no seu sistema você pode
usar outra fonte criada por profissionais em seu programa. Neste caso você tem
que atentar para o fato de que se a fonte não estiver instalada no seu sistema o
Windows irá tentar usar uma fonte ja instalada com as características parecidas
com a fonte, e, o resultado pode não ser o esperado.
Felizmente podemos adicionar fontes de forma dinâmica em nosso projeto e para
isso tudo o que você tem que fazer e adicionar o arquivo da fonte em seu
programa. Você não precisa nem mesmo instalar a fonte no sistema.
Usando os recursos da classe PrivateFontCollection podemos trabalhar com
fontes customizadas. Essa classe fornece um conjunto de famílias de fontes
criados a partir de arquivos de fontes que são fornecidos pelo aplicativo
cliente.
A primeira coisa que você deve fazer é obter a fonte que deseja usar no seu projeto.
Vejamos um exemplo...
A primeira coisa que você tem que fazer é escolher uma fonte.
Nesse site - http://www.fontpalace.com/ - você vai encontrar fontes grátis. Para usar basta escolher uma fonte, baixar o arquivo e armazená-lo em seu computador.
Eu vou usar a fonte PUSSYFOO.TTF que foi baixada do site acima e que esta armazenada na pasta c:\dados.
A seguir vamos incluir um novo formulário no projeto a partir do menu PROJECT -> Add Windows Forms.
Aceite o nome form2.vb e a seguir inclua no formulário dois controles Label a partir da TOOLBOX com os nomes Label1 e Label2.
Defina um texto qualquer nos controles Labels conforme mostra a figura abaixo:
Agora defina o seguinte namespace no form2:
Imports System.Drawing.Text
Agora no evento Load ou no evento Paint do formulário inclua o código abaixo:
Private Sub Form2_Paint(sender As Object, e As PaintEventArgs) Handles Me.Paint
Dim pfc As New PrivateFontCollection()
pfc.AddFontFile("c:\dados\PUSSYFOO.ttf")
Label1.Font = New Font(pfc.Families(0), 28, FontStyle.Regular)
Label2.Font = New Font(pfc.Families(0), 20, FontStyle.Regular)
End Sub
|
Abaixo a versão para C#:
private void Form2_Paint(object sender, PaintEventArgs e)
{
PrivateFontCollection pfc = new PrivateFontCollection();
pfc.AddFontFile("c:\\dados\\PUSSYFOO.ttf");
Label1.Font = new Font(pfc.Families(0), 28, FontStyle.Regular);
Label2.Font = new Font(pfc.Families(0), 20, FontStyle.Regular);
}
|
Execute o projeto e veja o resultado:
Você pode definir mais detalhes na fonte customizada como cor, tamanho, etc.
Vejamos ume exemplo onde vamos usar a mesma fonte customizada e os recursos do objeto Graphics para escrever um texto no formulário.
Vamos então incluir um novo formulário no projeto a partir do menu PROJECT -> Add Windows Forms.
Aceite o nome form3.vb para o formulário.
Agora defina o seguinte namespace no form3:
Imports System.Drawing.Text
A seguir inclua o código abaixo no evento Paint do formulário form3:
Private Sub Form3_Paint(sender As Object, e As PaintEventArgs) Handles Me.Paint
Dim contador As Integer = 0
Dim nomeFamilia As String = ""
Dim fonteFamilias() As FontFamily
Dim fonteColecao As New PrivateFontCollection
fonteColecao.AddFontFile("c:\dados\pussyfoo.ttf")
fonteFamilias = fonteColecao.Families
contador = fonteFamilias.Length
nomeFamilia = fonteFamilias(0).Name
Dim ff As FontFamily = New FontFamily(nomeFamilia, fonteColecao)
Dim f As New Font(ff, 72, FontStyle.Regular)
e.Graphics.DrawString("Macoratti", f, Brushes.Blue, 150, 20)
e.Graphics.DrawString("Quase", f, Brushes.Red, 70, 120)
e.Graphics.DrawString("Tudo para VB", f, Brushes.Green, 5, 220)
End Sub
|
A versão C# :
private void Form3_Paint(object sender, PaintEventArgs e)
{
int contador = 0;
string nomeFamilia = "";
FontFamily[] fonteFamilias = null;
PrivateFontCollection fonteColecao = new PrivateFontCollection();
fonteColecao.AddFontFile("c:\\dados\\pussyfoo.ttf");
fonteFamilias = fonteColecao.Families;
contador = fonteFamilias.Length;
nomeFamilia = fonteFamilias(0).Name;
FontFamily ff = new FontFamily(nomeFamilia, fonteColecao);
Font f = new Font(ff, 72, FontStyle.Regular);
e.Graphics.DrawString("Macoratti", f, Brushes.Blue, 150, 20);
e.Graphics.DrawString("Quase", f, Brushes.Red, 70, 120);
e.Graphics.DrawString("Tudo para VB", f, Brushes.Green, 5, 220);
}
|
Executando o projeto iremos obter o resultado abaixo:
Nota: Para executar o formulário apropriado altere o Startup Form na janela de propriedades do projeto.
Pegue o projeto completo aqui: ListaFontesInstaladas.zip
Bendito seja o
Deus e Pai de nosso Senhor Jesus Cristo que, segundo a sua grande misericórdia,
nos gerou de novo para uma viva esperança, pela ressurreição de Jesus Cristo
dentre os mortos,
Para uma herança incorruptível, incontaminável, e que não se pode murchar,
guardada nos céus para vós,
1 Pedro 1:3,4
Veja os
Destaques e novidades do SUPER DVD Visual Basic
(sempre atualizado) : clique e confira !
Quer migrar para o VB .NET ?
Quer aprender C# ??
Quer aprender os conceitos da Programação Orientada a objetos ? Quer aprender o gerar relatórios com o ReportViewer no VS 2013 ? |
Gostou ? Compartilhe no Facebook Compartilhe no Twitter
Referências: