Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
A PrivateFontCollection classe herda da FontCollection classe base abstrata. Você pode usar um PrivateFontCollection objeto para manter um conjunto de fontes especificamente para seu aplicativo. Uma coleção de fontes privada pode incluir fontes do sistema instalado, bem como as fontes que não foram instaladas no computador. Para adicionar um arquivo de fonte a uma coleção de fontes particular, chame o AddFontFile método de um PrivateFontCollection objeto.
A Families propriedade de um PrivateFontCollection objeto contém uma matriz de FontFamily objetos.
A quantidade de famílias de fonte em uma coleção de fontes privada não é necessariamente a mesma que a quantidade de arquivos de fonte que foram adicionados à coleção. Por exemplo, suponha que os arquivos ArialBd.tff, Times.tff e TimesBd.tff foram adicionados a uma coleção. Haverá três arquivos, mas somente duas famílias na coleção, pois Times.tff e TimesBd.tff pertencem à mesma família.
Exemplo
O exemplo a seguir adiciona os três arquivos de fonte a seguir a um PrivateFontCollection objeto:
C:\systemroot\Fonts\Arial.tff (Arial, regular)
C:\systemroot\Fonts\CourBI.tff (Courier New, negrito itálico)
C:\systemroot\Fonts\TimesBd.tff (Times New Roman, negrito)
O código recupera uma matriz de objetos FontFamily da propriedade Families do objeto PrivateFontCollection.
Para cada objeto FontFamily na coleção, o código chama o método IsStyleAvailable para determinar se vários estilos (regular, negrito, itálico, negrito itálico, sublinhado e riscado) estão disponíveis. Os argumentos passados para o IsStyleAvailable método são membros da FontStyle enumeração.
Se uma determinada combinação de família/estilo estiver disponível, um Font objeto será construído usando essa família e estilo. O primeiro argumento passado para o Font construtor é o nome da família de fontes (não um FontFamily objeto, como é o caso de outras variações do Font construtor). Depois que o objeto Font é construído, ele é passado para o método DrawString da classe Graphics para exibir o nome da família junto com o nome do estilo.
A saída do código a seguir é semelhante à saída mostrada na ilustração a seguir:

Arial.tff (adicionada à coleção de fontes privadas no exemplo de código a seguir) é o arquivo de fonte do estilo regular da fonte Arial. No entanto, observe que a saída do programa mostra vários estilos disponíveis, além do regular, para a família de fontes Arial. Isso ocorre porque o GDI+ pode simular os estilos negrito, itálico e negrito e itálico a partir do estilo regular. O GDI+ também pode produzir sublinhados e riscados a partir do estilo regular.
Da mesma forma, o GDI+ pode simular o estilo negrito itálico a partir do estilo negrito ou do estilo itálico. O resultado do programa mostra que o estilo negrito itálico está disponível para a família Times, embora TimesBd.tff (Times New Roman, negrito) seja o único arquivo de Times na coleção.
// Helper function to print text in a font and style
private float DrawFont(Graphics graphicsObj,
FontFamily family,
FontStyle style,
SolidBrush colorBrush,
PointF location,
string styleName)
{
// The string to print, which contains the family name and style
string familyNameAndStyle = $"{family.Name} {styleName}";
// Create the font object
using (Font fontObject = new Font(family, 16, style, GraphicsUnit.Pixel))
{
// Draw the string
graphicsObj.DrawString(familyNameAndStyle, fontObject, colorBrush, location);
// Return the height of the font
return fontObject.Height;
}
}
// The OnPaint method of a form, which provides the graphics object
protected override void OnPaint(PaintEventArgs e)
{
PointF location = new PointF(10, 0);
SolidBrush solidBrush = new SolidBrush(Color.Black);
FontFamily[] fontFamilies;
PrivateFontCollection privateFontCollection = new PrivateFontCollection(); // Dispose later
// Add three font files to the private collection.
privateFontCollection.AddFontFile(System.Environment.ExpandEnvironmentVariables("%systemroot%\\Fonts\\Arial.ttf"));
privateFontCollection.AddFontFile(System.Environment.ExpandEnvironmentVariables("%systemroot%\\Fonts\\CourBI.ttf"));
privateFontCollection.AddFontFile(System.Environment.ExpandEnvironmentVariables("%systemroot%\\Fonts\\TimesBD.ttf"));
// Get the array of FontFamily objects.
fontFamilies = privateFontCollection.Families;
// Process each font in the collection
for (int i = 0; i < fontFamilies.Length; i++)
{
// Draw the font in every style
// Regular
if (fontFamilies[i].IsStyleAvailable(FontStyle.Regular))
location.Y += DrawFont(e.Graphics, fontFamilies[i], FontStyle.Regular, solidBrush, location, "Regular");
// Bold
if (fontFamilies[i].IsStyleAvailable(FontStyle.Bold))
location.Y += DrawFont(e.Graphics, fontFamilies[i], FontStyle.Bold, solidBrush, location, "Bold");
// Italic
if (fontFamilies[i].IsStyleAvailable(FontStyle.Italic))
location.Y += DrawFont(e.Graphics, fontFamilies[i], FontStyle.Italic, solidBrush, location, "Italic");
// Bold and Italic
if (fontFamilies[i].IsStyleAvailable(FontStyle.Bold) &&
fontFamilies[i].IsStyleAvailable(FontStyle.Italic))
location.Y += DrawFont(e.Graphics, fontFamilies[i], FontStyle.Bold | FontStyle.Italic, solidBrush, location, "BoldItalic");
// Underline
if (fontFamilies[i].IsStyleAvailable(FontStyle.Underline))
location.Y += DrawFont(e.Graphics, fontFamilies[i], FontStyle.Underline, solidBrush, location, "Underline");
// Strikeout
if (fontFamilies[i].IsStyleAvailable(FontStyle.Strikeout))
location.Y += DrawFont(e.Graphics, fontFamilies[i], FontStyle.Strikeout, solidBrush, location, "Strikeout");
// Extra space between font families
location.Y += 10;
}
privateFontCollection.Dispose();
}
' Helper function to print text in a font and style
Private Function DrawFont(graphicsObj As Graphics,
family As FontFamily,
style As FontStyle,
colorBrush As SolidBrush,
location As PointF,
styleName As String) As Single
' The string to print, which contains the family name and style
Dim familyNameAndStyle As String = $"{family.Name} {styleName}"
' Create the font object
Using fontObject As New Font(family, 16, style, GraphicsUnit.Pixel)
' Draw the string
graphicsObj.DrawString(familyNameAndStyle, fontObject, colorBrush, location)
' Return the height of the font
Return fontObject.Height
End Using
End Function
' The OnPaint method of a form, which provides the graphics object
Protected Overrides Sub OnPaint(e As PaintEventArgs)
Dim location As New PointF(10, 0)
Dim solidBrush As New SolidBrush(Color.Black)
Dim fontFamilies() As FontFamily
Dim privateFontCollection As New PrivateFontCollection() ' Dispose later
' Add three font files to the private collection.
privateFontCollection.AddFontFile(System.Environment.ExpandEnvironmentVariables("%systemroot%\Fonts\Arial.ttf"))
privateFontCollection.AddFontFile(System.Environment.ExpandEnvironmentVariables("%systemroot%\Fonts\CourBI.ttf"))
privateFontCollection.AddFontFile(System.Environment.ExpandEnvironmentVariables("%systemroot%\Fonts\TimesBD.ttf"))
' Get the array of FontFamily objects.
fontFamilies = privateFontCollection.Families
' Process each font in the collection
For i = 0 To fontFamilies.Length - 1
' Draw the font in every style
' Regular
If fontFamilies(i).IsStyleAvailable(FontStyle.Regular) Then
location.Y += DrawFont(e.Graphics, fontFamilies(i), FontStyle.Regular, solidBrush, location, "Regular")
End If
' Bold
If fontFamilies(i).IsStyleAvailable(FontStyle.Bold) Then
location.Y += DrawFont(e.Graphics, fontFamilies(i), FontStyle.Bold, solidBrush, location, "Bold")
End If
' Italic
If fontFamilies(i).IsStyleAvailable(FontStyle.Italic) Then
location.Y += DrawFont(e.Graphics, fontFamilies(i), FontStyle.Italic, solidBrush, location, "Italic")
End If
' Bold and Italic
If fontFamilies(i).IsStyleAvailable(FontStyle.Italic) And
fontFamilies(i).IsStyleAvailable(FontStyle.Italic) Then
location.Y += DrawFont(e.Graphics, fontFamilies(i), FontStyle.Bold Or FontStyle.Italic, solidBrush, location, "BoldItalic")
End If
' Underline
If fontFamilies(i).IsStyleAvailable(FontStyle.Underline) Then
location.Y += DrawFont(e.Graphics, fontFamilies(i), FontStyle.Underline, solidBrush, location, "Underline")
End If
' Strikeout
If fontFamilies(i).IsStyleAvailable(FontStyle.Strikeout) Then
location.Y += DrawFont(e.Graphics, fontFamilies(i), FontStyle.Strikeout, solidBrush, location, "Strikeout")
End If
' Extra space between font families
location.Y += 10
Next
privateFontCollection.Dispose()
End Sub
Compilando o código
O exemplo anterior foi projetado para uso com o Windows Forms e requer PaintEventArgse, que é um parâmetro de PaintEventHandler.
Consulte também
.NET Desktop feedback