Winform 使用图标字体Awesome

网上看了不少帖子关于winform如何使用的,尤其是冰封一夏 https://www.cnblogs.com/bfyx/和sunny-ui https://www.cnblogs.com/yhuse/

但是都没有详细说明为什么。

回头想想,字体图标嘛,根本的核心还是字体,所以在winform中使用awesome核心无非就是

  • 第一步是指定目标控件的awesome字体,这里分几个步骤:
  1. 为了保持通用性,不太可能要求客户端都安装awesome字体,所以必须让应用自带字体,也就是自己装载字体。装载很简单,两句话搞定:
    1. PrivateFontCollection ImageFont = new PrivateFontCollection();

      ImageFont.AddFontFile(@"font\FontAwesome.ttf");

      这里需要注意的是在设计模式下会找不到字体,所以手动将这里拷贝到VS的安装目录,
      我的是这个C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\Common7\IDE。

        

  2. 然后定义字体,自此字体准备完毕,剩下的就很简单了,只要指定目标的字体为iconfont即可
    iconfont= new Font(ImageFont.Families[0], Font.Size, FontStyle.Bold, Font.Unit);
    

      

  • 第二部输入要显示的内容,因为是字体,所有我们要输入的内容一定是string,所以这一步的核心就是输入什么string,这里分几步:
    1. 因为我们要显示的内容是图标,而不是文字,而图标字体不像其他字体要显示什么就输入什么,我们必须把要显示的图标和我们输入的string对应起来,也就是跟某种属性关联起来,我才能通过这个属性调出指定的图标,其他字体比如要显示"电脑“,不管你用什么字体都是输入”电脑“二字,但是图标字体你得根据人家定义好的来,awesome是用unicode定义的,其实就是一个ushort,所以问题就变得很简单了,这个关联属性就是ushort。总共几百个图标,对应几百个ushort值,官方网站上都把这些值给你对应好了,不过记得是16进制的。官网地址: https://fontawesome.com/icons?d=listing&s=solid&m=free,如果想偷懒,这些在sunni-ui和冰封一夏那里也都整理好了,不过他们用的是4.7版本,如果需要最新版那就直接去官网,拷贝一下放到excel里,稍微整理一下就都有了
      官网拷贝到excel是这样的,很容易辨认,前面是名字,后四位是16进制的值,自己处理一下,然后做成一个枚举 ad=0xf641,address-book=0xf2b9,address-card=0xf2bb...
      Winform 使用图标字体Awesome
    2. 第一步把所有的图标做成枚举后,我们就能得到关联的两个值,名字-ushort的值,我们可以把这个枚举作为属性的类型,然后调用这个属性的时候,只需要指定名字,就能得到关联的ushort值。为什么需要名字呢,因为ushort干巴巴的一个数字实在是难以辨认。
    3. 最后一步就是得到我们所需要的string了,这个时候很简单,只需要把上一步得到的int用这方法转换程string
      char.ConvertFromUtf32((int)_Value)

       

  • 第三步也就是最后一步,这一步就变得非常简单了。因为已经准备好字体和要显示的string了,所以只需要将他们赋值给指定的控件就可以了,比如label,button,textbox,设置他们的font和text即可

Winform 使用图标字体Awesome

上一篇:WINDOWS API中CREATEWINDOW()函数详解(转载)*


下一篇:Mvc .net Core 通用 ajax跨域调api