Saltar al contenido

Cambiar el icono de fuente en WPF usando Font Awesome

Solución:

Font Awesome tiene paquetes NuGet llamados FontAwesome.UWP y FontAwesome.WPF. Solo descarga uno de estos.

Paquetes NuGet para Font Awesome

Si va a utilizar una importación de icono, siga el espacio de nombres en su código XAML:

xmlns:fa="http://schemas.fontawesome.io/icons/"

Úselo en su botón de esta manera:

<Button x:Name="btnButton">
    <Button.Content>
        <fa:ImageAwesome Icon="LongArrowLeft"/>
    </Button.Content>
</Button>

Y finalmente en su código C # detrás:

using FontAwesome.WPF; // on the top of the code
btnButton.Content = FontAwesomeIcon.LongArrowRight;

ACTUALIZAR

Encontré una publicación diferente para este tema: Agregar fuente de ícono en wpf Creo que esto debería ser más probable que lo que desea.

Asegúrese de que su fuente se agregue como recurso. Luego, usa la siguiente cadena:

<Setter Property="TextElement.FontFamily" Value="pack://application:,,,/fonts/#FontAwesome" />

En la cadena de arriba, supongo que el nombre de la fuente (no el nombre de archivo de la fuente) es FontAwesome.

Solo necesitas:

  1. Agregue la fuente a su proyecto, digamos que las coloca en una carpeta “fuentes”
  2. Cambie la acción de compilación a Recurso no Recurso incrustado
  3. Agregue su estilo para configurar la familia de fuentes como el fragmento de código anterior y configure el TextBlock.Text al icono que desee y aplique el estilo al TextBlock.

Si desea cambiar el icono actualizando el TextBlock.Text propiedad, debe establecer la Text propiedad con la cadena Unicode admitida.

Prueba algo como

 tblkFontIcon.Text = "uf000";

en vez de

tblkFontIcon.Text = "&#xf000;";

Si está utilizando el código de Uso de iconos de fuentes

entonces probablemente te perdiste la sección “Cómo funciona” en esa publicación. Debe usar esa extensión de marcado, en lugar de usar la propiedad TextBlock.Text.

En su código de muestra:

<RibbonButton Label="Import data" 
  LargeImageSource="{WpfTools:ImageFromFont Text=&#xf01a;, 
  FontFamily=/RibbonFontIconSample;component/Resources/#FontAwesome, Brush=Brown}" />

presta atención a WpfTools:ImageFromFont, es la extensión de marcado, permite que el analizador xaml convierta el

{WpfTools:ImageFromFont Text=&#xf01a;, 
      FontFamily=/RibbonFontIconSample;component/Resources/#FontAwesome, Brush=Brown}

a una ImageSource y asignado a la LargeImageSource propiedad.

Entonces, en su xaml, podría reemplazar el TextBlock con un Image, entonces debería ser algo como:

<Image Source="{WpfTools:ImageFromFont Text=&#xf000;, 
      FontFamily=/RibbonFontIconSample;component/Resources/#FontAwesome, Brush=Brown}" />

Si desea cambiar el icono, deberá cambiar el ImageSource usted mismo, simplemente siga el uso de iconos de fuentes para crear su propio método, o simplemente copie el siguiente código de ese tutorial.

private static ImageSource CreateGlyph(string text, 
        FontFamily fontFamily, FontStyle fontStyle, FontWeight fontWeight, 
        FontStretch fontStretch, Brush foreBrush)
{
    if (fontFamily != null && !String.IsNullOrEmpty(text))
    {
        Typeface typeface = new Typeface(fontFamily, fontStyle, fontWeight, fontStretch);
        GlyphTypeface glyphTypeface;
        if (!typeface.TryGetGlyphTypeface(out glyphTypeface))
                throw new InvalidOperationException("No glyphtypeface found");

        ushort[] glyphIndexes = new ushort[text.Length];
        double[] advanceWidths = new double[text.Length];
        for (int n = 0; n < text.Length; n++)
        {
            ushort glyphIndex = glyphTypeface.CharacterToGlyphMap[text[n]];
            glyphIndexes[n] = glyphIndex;
            double width = glyphTypeface.AdvanceWidths[glyphIndex] * 1.0;
            advanceWidths[n] = width;
        }

        GlyphRun gr = new GlyphRun(glyphTypeface, 0, false, 1.0, glyphIndexes,
                                    new Point(0, 0), advanceWidths, 
                                    null, null, null, null, null, null);
        GlyphRunDrawing glyphRunDrawing = new GlyphRunDrawing(foreBrush, gr);
        return new DrawingImage(glyphRunDrawing);

    }
    return null;
}
¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *