Cómo: Enumerar las fuentes instaladas
La clase InstalledFontCollection hereda de la clase base abstracta FontCollection. Se puede usar un objeto InstalledFontCollection para enumerar las fuentes instaladas en el equipo. La propiedad Families de un objeto InstalledFontCollection contiene una matriz de objetos FontFamily.
Ejemplo
En el ejemplo siguiente se enumeran los nombres de todas las familias de fuentes instaladas en el equipo. El código recupera la propiedad Name de cada objeto FontFamily en la matriz devuelta por la propiedad Families. Según se van recuperando los nombres de las familias, se concatenan para formar una lista separada por comas. Después, el método DrawString de la clase Graphics dibuja la lista separada por comas en un rectángulo.
Si se ejecuta el código de ejemplo, el resultado será similar al que se muestra en la siguiente ilustración.
Dim fontFamily As New FontFamily("Arial")
Dim font As New Font( _
fontFamily, _
8, _
FontStyle.Regular, _
GraphicsUnit.Point)
Dim rectF As New RectangleF(10, 10, 500, 500)
Dim solidBrush As New SolidBrush(Color.Black)
Dim familyName As String
Dim familyList As String = ""
Dim fontFamilies() As FontFamily
Dim installedFontCollection As New InstalledFontCollection()
' Get the array of FontFamily objects.
fontFamilies = installedFontCollection.Families
' The loop below creates a large string that is a comma-separated
' list of all font family names.
Dim count As Integer = fontFamilies.Length
Dim j As Integer
While j < count
familyName = fontFamilies(j).Name
familyList = familyList & familyName
familyList = familyList & ", "
j += 1
End While
' Draw the large string (list of all families) in a rectangle.
e.Graphics.DrawString(familyList, font, solidBrush, rectF)
FontFamily fontFamily = new FontFamily("Arial");
Font font = new Font(
fontFamily,
8,
FontStyle.Regular,
GraphicsUnit.Point);
RectangleF rectF = new RectangleF(10, 10, 500, 500);
SolidBrush solidBrush = new SolidBrush(Color.Black);
string familyName;
string familyList = "";
FontFamily[] fontFamilies;
InstalledFontCollection installedFontCollection = new InstalledFontCollection();
// Get the array of FontFamily objects.
fontFamilies = installedFontCollection.Families;
// The loop below creates a large string that is a comma-separated
// list of all font family names.
int count = fontFamilies.Length;
for (int j = 0; j < count; ++j)
{
familyName = fontFamilies[j].Name;
familyList = familyList + familyName;
familyList = familyList + ", ";
}
// Draw the large string (list of all families) in a rectangle.
e.Graphics.DrawString(familyList, font, solidBrush, rectF);
Compilar el código
El ejemplo anterior está diseñado para formularios Windows Forms y requiere PaintEventArgs e, que es un parámetro de PaintEventHandler. Además, debería importar el espacio de nombres System.Drawing.Text.