网上看了不少帖子关于winform如何使用的,尤其是冰封一夏 https://www.cnblogs.com/bfyx/和sunny-ui https://www.cnblogs.com/yhuse/
但是都没有详细说明为什么。
回头想想,字体图标嘛,根本的核心还是字体,所以在winform中使用awesome核心无非就是
- 第一步是指定目标控件的awesome字体,这里分几个步骤:
- 为了保持通用性,不太可能要求客户端都安装awesome字体,所以必须让应用自带字体,也就是自己装载字体。装载很简单,两句话搞定:
-
PrivateFontCollection ImageFont = new PrivateFontCollection();
ImageFont.AddFontFile(@"font\FontAwesome.ttf");
这里需要注意的是在设计模式下会找不到字体,所以手动将这里拷贝到VS的安装目录,
我的是这个C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\Common7\IDE。
-
- 然后定义字体,自此字体准备完毕,剩下的就很简单了,只要指定目标的字体为iconfont即可
iconfont= new Font(ImageFont.Families[0], Font.Size, FontStyle.Bold, Font.Unit);
- 第二部输入要显示的内容,因为是字体,所有我们要输入的内容一定是string,所以这一步的核心就是输入什么string,这里分几步:
- 因为我们要显示的内容是图标,而不是文字,而图标字体不像其他字体要显示什么就输入什么,我们必须把要显示的图标和我们输入的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...
- 第一步把所有的图标做成枚举后,我们就能得到关联的两个值,名字-ushort的值,我们可以把这个枚举作为属性的类型,然后调用这个属性的时候,只需要指定名字,就能得到关联的ushort值。为什么需要名字呢,因为ushort干巴巴的一个数字实在是难以辨认。
- 最后一步就是得到我们所需要的string了,这个时候很简单,只需要把上一步得到的int用这方法转换程string
char.ConvertFromUtf32((int)_Value)
- 因为我们要显示的内容是图标,而不是文字,而图标字体不像其他字体要显示什么就输入什么,我们必须把要显示的图标和我们输入的string对应起来,也就是跟某种属性关联起来,我才能通过这个属性调出指定的图标,其他字体比如要显示"电脑“,不管你用什么字体都是输入”电脑“二字,但是图标字体你得根据人家定义好的来,awesome是用unicode定义的,其实就是一个ushort,所以问题就变得很简单了,这个关联属性就是ushort。总共几百个图标,对应几百个ushort值,官方网站上都把这些值给你对应好了,不过记得是16进制的。官网地址: https://fontawesome.com/icons?d=listing&s=solid&m=free,如果想偷懒,这些在sunni-ui和冰封一夏那里也都整理好了,不过他们用的是4.7版本,如果需要最新版那就直接去官网,拷贝一下放到excel里,稍微整理一下就都有了
- 第三步也就是最后一步,这一步就变得非常简单了。因为已经准备好字体和要显示的string了,所以只需要将他们赋值给指定的控件就可以了,比如label,button,textbox,设置他们的font和text即可