WPF使用字体时,可以不在系统中进行安装,直接引用字体文件就可以。这是一个不错的性能,这样尽可能保持了程序本身的自管理。
经常有一些需求需要引用一些常见图标,fontawesome就是一个不错的选择。矢量字符充当图标与位图相比有他自身的优势,这里就不展开说了。那么WPF程序中,如何引用字符图标呢?
准备:
1、下载字体
2、将字体文件,放到指定的目录下。例如放在下图位置,
方法一:xaml方式,定义资源引用
<FontFamily x:Key="{x:Static wpf:FontUtils.AwesomeKey}">pack://application:,,,/FWindSoft.Wpf;component/Resources/#FontAwesome</FontFamily>
将该资源定义放到Application的Resource中,或者放置到被编译成page的xaml文件中。定义资源键值,就能全局使用资源键值引用了
/// <summary>
/// wpf下字体相关命令
/// </summary>
public class FontUtils
{
static FontUtils()
{
AwesomeKey = new ComponentResourceKey(typeof(FontUtils), "FontAwesome");
}
/// <summary>
/// Awesome字体
/// </summary>
public static FontFamily Awesome { get; private set; }
}
方法二:通过绝对路径引用
/// <summary>
/// wpf下字体相关命令
/// </summary>
public class FontUtils
{
static FontUtils()
{
try
{
Awesome = new FontFamily(@"C:\Projects\Resouce\#FontAwesome");
}
catch (Exception )
{
}
}
/// <summary>
/// Awesome字体
/// </summary>
public static FontFamily Awesome { get; private set; }
}
方法三:通过wpf资源相对路径引用
这是我最喜欢的方式,这种方式比较简约,耦合关联性小。只是一开始的时候这个路径总是写不对,最后终于找到规律了,下面的写法真实可用。如果您和我似的为了心中那一点执念,想找一个自己满意的方式去引用字体,那么现在您可能找到了
/// <summary>
/// wpf下字体相关命令
/// </summary>
public class FontUtils
{
static FontUtils()
{
try
{
Awesome = new FontFamily(new Uri(@"pack://application:,,,/FWindSoft.Wpf;component/Resources/"), "./#FontAwesome");
}
catch (Exception )
{
}
}
/// <summary>
/// Awesome字体
/// </summary>
public static FontFamily Awesome { get; private set; }
}