WPF字体图标——IconFont

简介: 原文:WPF字体图标——IconFont 版权声明:本文为【CSDN博主:松一160】原创文章,未经允许不得转载。 https://blog.csdn.net/songyi160/article/details/54894233 一、字体图标概述 ①字体图标其实就是把矢量图形打包到字体文件里,以后就可以像使用一般外置字体一样的使用它,因此Winform、WPF中都是可以用的。
原文: WPF字体图标——IconFont

版权声明:本文为【CSDN博主:松一160】原创文章,未经允许不得转载。 https://blog.csdn.net/songyi160/article/details/54894233

一、字体图标概述

①字体图标其实就是把矢量图形打包到字体文件里,以后就可以像使用一般外置字体一样的使用它,因此Winform、WPF中都是可以用的。

②可以在很多地方使用图标字体,包括自定义控件、自定义样式、模板等。

③字体图标优点:

  • 字体文件非常小,比使用png等图片文件要小很多
  • 和普通字体一样,是矢量的,可任意放大缩小,且不会失真
  • 网上开源字体图标很多,很容易获取,项目开发中需要的绝大部分图标都可以找到,非常方便

二、在WPF中使用字体图标

①获取字体图标,推荐阿里巴巴开源字体,如何下载字体参考它网站的下载说明,解压下载的字体会得到以下文件:


iconfont.tff是我们需要的字体图标库文件

demo_unicode.html是字体库对应的字体的标识,如下图:


以后通过使用上图红色方框中的标识,即可获得对应的字体图标

②将字体图标添加到项目新建的Resources文件夹中,并设置其生成操作为"Resource",如下图:



③定义样式

使用TextBlock作为图标显示的容器,因此定义一个TextBlock的样式即可,如下所示。其中"SK2015"为字体名称,以前阿里巴巴开源字体库下载的时候可以修改字体名称,现在好像修改不了,默认字体名称为"iconfont",有朋友发现如何修改字体名称的话,请在下面给我留言,谢谢!

MyIconFontStyle.xaml代码如下:

<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
                    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
                    xmlns:local="clr-namespace:IconFontDemo">
    <Style x:Key="iFont" TargetType="TextBlock">
        <Setter Property="FontFamily" Value="/IconFontDemo;component/Resources/#SF2015"/>
        <Setter Property="TextAlignment" Value="Center"/>
        <Setter Property="HorizontalAlignment" Value="Center"/>
        <Setter Property="VerticalAlignment" Value="Center"/>
        <Setter Property="FontSize" Value="20"/>
    </Style>
</ResourceDictionary>
注意:上面的FontFamily属性也可以这样设置<Setter Property="FontFamily" Value="/Resources/#SF2015"/>
但是为了以后将字体样式定义到另外一个程序集,还是推荐使用全的相对路径,否则会出现找不到资源的问题。

④在App.xaml中引用定义的样式资源

<Application x:Class="IconFontDemo.App"
             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
             xmlns:local="clr-namespace:IconFontDemo"
             StartupUri="MainWindow.xaml">
    <Application.Resources>
        <ResourceDictionary>
            <ResourceDictionary.MergedDictionaries>
                <ResourceDictionary Source="MyIconFontStyle.xaml"/>
            </ResourceDictionary.MergedDictionaries>
        </ResourceDictionary>
    </Application.Resources>
</Application>
⑤在xaml中使用字体图标,MainWindow.xaml代码
<Window x:Class="IconFontDemo.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        xmlns:local="clr-namespace:IconFontDemo"
        mc:Ignorable="d"
        Title="MainWindow" Height="350" Width="525" Background="Blue">
    <StackPanel Orientation="Horizontal">
        <TextBlock Text="" Style="{StaticResource iFont}" FontSize="50" Margin="3" Foreground="White"></TextBlock>
        <TextBlock Text="" Style="{StaticResource iFont}" FontSize="60" Margin="3" Foreground="SandyBrown"></TextBlock>
        <TextBlock Text="" Style="{StaticResource iFont}" FontSize="70" Margin="3" Foreground="#FB0AE8"></TextBlock>
        <TextBlock x:Name="ios" Style="{StaticResource iFont}" FontSize="80" Margin="3" Foreground="Chartreuse"></TextBlock>
        <TextBlock x:Name="android" Style="{StaticResource iFont}" FontSize="90" Margin="3" Foreground="#FEDB11"></TextBlock>
    </StackPanel>
</Window>

很奇怪Text属性在网页上无法显示,三个属性分别为:Text="&#xe600;" Text="&#xe61c;" Text="&#xe63d;"

⑥在CS代码中使用字体图标,MainWindow.xaml.cs代码:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;

namespace IconFontDemo
{
    /// <summary>
    /// MainWindow.xaml 的交互逻辑
    /// </summary>
    public partial class MainWindow : Window
    {
        public MainWindow()
        {
            InitializeComponent();
            ios.Text = "\xe602";
            android.Text = "\xe60c";
        }
    }
}
⑦最终效果演示

目录
相关文章
C# WPF 中 外部图标引入iconfont,无法正常显示问题 【小白记录】
本文介绍了在C# WPF应用程序中引入外部iconfont图标时可能遇到的显示问题及其解决方法:1) 检查资源路径和引入格式是否正确,确保字体文件引用格式为“#xxxx”,并正确指向字体文件位置;2) 确保图标资源被包含在程序集中,通过设置字体文件的生成操作为Resource(资源)来实现。
C# WPF 中 外部图标引入iconfont,无法正常显示问题 【小白记录】
|
前端开发 C# UED
WPF自定义控件02:字体图标支持
最近几年,多数应用都在采用一种矢量图图标,且它作为一种字体,可以非常方便进行整合,当使用某个图标时,只需要通过文本进行制定具体的图标编码即可使用,这里比较熟知的有Font Awesome。它给我们提供了一套可缩放的矢量图标字体,它可以被指定大小、颜色、阴影以及任何可以用CSS进行定义的样式。
852 0
WPF自定义控件02:字体图标支持
|
C# 编解码 区块链
WPF中应用字体图标
原文:WPF中应用字体图标 一、什么是字体图标          我们在进行GDI(图形界面)编程的过程中图标是不可少的。近些年随着网络的繁荣和移动应用的繁荣,矢量图的应用越来越火。          矢量图是一种用数学方法描述的、由一系列点和线组成的图,因此相比位图文件比较小,并且还和分辨率无关。
1002 0
|
C#
在WPF中使用FontAwesome之类的字体图标
原文:在WPF中使用FontAwesome之类的字体图标 我之前在博客中介绍过几个矢量图库网站,在WPF程序中,一般接触到的矢量图标资源有XAML、SVG、字体这三种格式。XAML是标准格式就不说了,SVG并不是直接支持的,不过微软提供了Expression Design可以非常方便我们将其转换为XAML格式的资源。
1416 0
|
C#
WPF使用矢量字体图标(阿里巴巴iconfont)
原文:WPF使用矢量字体图标(阿里巴巴iconfont) 版权声明:本文为博主原创文章,转载请注明出处。 https://blog.csdn.net/lwwl12/article/details/78606747 常用的矢量字体图标:阿里巴巴iconfont,FontAwesome;今天介绍如何在wpf中使用阿里巴巴iconfont矢量图标。
2931 0
|
C#
WPF字体图标——FontAwesom
原文:WPF字体图标——FontAwesom 版权声明:本文为【CSDN博主:松一160】原创文章,未经允许不得转载。 https://blog.csdn.net/songyi160/article/details/54907492 一、字体图标概述 FontAwesome是迄今为止最出色的图标字体(没有之一),优点是图标多、图标美观、兼容各种应用场景等。
905 0
|
区块链 C#
在WPF中使用字体图标
原文:在WPF中使用字体图标 一、源码描述    这是一款基于WPF窗体应用程序的字体图标示例源码,    该源码简单易懂使用于初学者和实战项目应用,    感兴趣的朋友们可以下载看看哦。二、功能介绍    1、用ICO字体代替纯文字    三、实现步骤    1、在网上下载Font ICO 字体字...
1243 0
|
前端开发 C#
Bootstrap WPF Style(二)--Glyphicons 字体图标
原文:Bootstrap WPF Style(二)--Glyphicons 字体图标 介绍 关于Glyphicons字体图标,首先给出友情链接 Glyphicons  这个项目是在Bootstrap WPF Style项目基础上做的,详见http://www.
1258 0
|
C# 前端开发 容器
WPF自定义控件与样式(1)-矢量字体图标(iconfont)
原文:WPF自定义控件与样式(1)-矢量字体图标(iconfont) 一.图标字体   图标字体在网页开发上运用非常广泛,具体可以网络搜索了解,网页上的运用有很多例子,如Bootstrap。但在C/S程序中使用还不多,字体图标其实就是把矢量图形打包到字体文件里,就像使用一般外置字体一样的使用,因此Winform、WPF中都是可以用的。
1767 0
|
3月前
|
开发框架 缓存 前端开发
循序渐进介绍基于CommunityToolkit.Mvvm 和HandyControl的WPF应用端开发(11) -- 下拉列表的数据绑定以及自定义系统字典列表控件
循序渐进介绍基于CommunityToolkit.Mvvm 和HandyControl的WPF应用端开发(11) -- 下拉列表的数据绑定以及自定义系统字典列表控件