一、前言
很多時候,使用向量圖形可以帶來非常美觀的介面效果,比如SVG的使用。但是Winform原生是不支援顯示SVG影像的,所以退而求其次,可以使用IconFont來實現相似的向量效果。
先來個圖解解饞:
知識點:資原始檔中字型的使用方法、IconFont使用方法、IconFont應用場景示例、IconFont顯示效果優化、IconFont使用經驗等。
相信看完的你,一定會有所收穫!
本文地址:https://www.cnblogs.com/lesliexin/p/14651505.html
二,IconFont
(一),IconFont選擇
網上IconFont資源很多,同時很多提供SVG下載的網站都會提供對應的IconFont檔案。
本文所用的是比較流行且開源免費的FontAwesome v4.7。官網:http://www.fontawesome.com.cn
(二),IconFont使用方式
在Winform中,是使用圖示字型的Unicode碼進行顯示的。
在FontAwesome官網中,有所有圖示的Unicode,我們使用的就是如圖中的Unicode編碼。
在Winform中使用時,只需要將圖中的轉義符號替換成“\u”即可,如圖所示:
三,重點
(一),嵌入資源中字型檔案的使用
使用方法:PrivateFontCollection.AddMemoryFont( IntPtr memory, int length)
MSDN解釋:
(二),IconFont使用方法
1,方法一
支援新增文字顯示的控制元件,則直接使用即可,需要注意的是將控制元件的屬性“UseCompatibleTextRendering”設定為“true”。
2,方法二
使用GDI+的方法“Graphics.DrawString()”去繪製。
四、具體實現
(注:文末有原始碼工程下載)
(一),介面說明
包含1個ComboBox,4個Label,2個RadioButton。
(二),核心屬性相關
1,設定Label控制元件的屬性“UseCompatibleTextRendering”為“true”,以支援IconFont顯示。
MSDN解釋:
2,設定ComboBox的屬性“DrawMode”為“OwerDrawFiexd”,以支援下拉選單項的重繪。
(三),核心事件相關
1,ComboBox 列表項重繪事件——DrawItem
作用:對列表項進行重繪,支援顏色等。
2,Label點選事件——Click
作用:點選後改變文字
(四),核心方法相關
1,載入資原始檔中IconFont檔案
2,初始化下拉選單
3,IconFont顯示
五、問題及解決經驗
1,IconFont中非圖示字型問題
在使用了IconFont後,因為IconFont中只包含圖示,所以正常文字的字型就會以預設字型來顯示,如宋體。
解決經驗:
2,IconFont中圖示存在鋸齒現象
在正常使用時,如果直接使用控制元件的Text屬性給控制元件設定圖示,就會出現鋸齒現象。
解決經驗:
使用GDI+的方式去繪製字型,因為可以設定“SmoothingMode(平滑模式)”為“AntiAlias(反鋸齒)”,以達到沒有鋸齒平滑顯示的效果。
效果:
五、總結
每種技術都有自己的適用場景,在某些場景下使用IconFont可以很方便的實現一些顯示效果。
IconFont的應用場景有很多,我這裡是拋磚引玉,提供一種應用思路而已。
歡迎大家評論指正。
源工程下載:https://files.cnblogs.com/files/lesliexin/DemoIconFont.7z
-【END]-