(原創)IconFont(矢量圖標字體)在Winform中的應用

一、前言

很多時候,使用矢量圖形可以帶來非常美觀的介面效果,比如SVG的使用。但是Winform原生是不支援顯示SVG影像的,所以退而求其次,可以使用IconFont來實現相似的矢量效果。

先來個圖解解饞:

知識點:資源文件中字體的使用方法、IconFont使用方法、IconFont應用場景示例、IconFont顯示效果優化、IconFont使用經驗等。

相信看完的你,一定會有所收穫!

本文地址://www.cnblogs.com/lesliexin/p/14651505.html


二,IconFont

(一),IconFont選擇

網上IconFont資源很多,同時很多提供SVG下載的網站都會提供對應的IconFont文件。

本文所用的是比較流行且開源免費的FontAwesome v4.7。官網://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的應用場景有很多,我這裡是拋磚引玉,提供一種應用思路而已。

歡迎大家評論指正。

源工程下載://files.cnblogs.com/files/lesliexin/DemoIconFont.7z

-【END]-