(原創)IconFont(向量圖示字型)在Winform中的應用

leslie_xin發表於2021-04-13

一、前言

很多時候,使用向量圖形可以帶來非常美觀的介面效果,比如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]-

相關文章