天天看點

WPF使用ttf圖示字型

将矢量圖形打包成字型的形式,使用方式也和我們使用字型一樣,能夠自由設定圖示的大小,圖示的顔色。相對于傳統圖檔來說,優點還是很明顯的:

體積小,加載速度快,性能高

矢量(自由縮放,不會失真)

靈活性(可通過代碼更改圖示顔色)

正是因為它和字型一樣,也存在一些弊端:

難以相容以前的設計,替換工作量大

很難貼合設計師的設計稿,協調溝通成本略高

首先推薦的是阿裡巴巴矢量圖示庫,這個裡面方案比較多,也有很多成套的圖示,可以多嘗試嘗試,之前隻需要登入就行了,現在好像還要驗證手機号,有點惡心。

其次就是Font Awesome 圖示,這裡分為舊版和新版(V5版本 or Pro版本),舊版是免費,圖示較少。

微軟目前提供了兩套,一套是Windows10的Segoe MDL2 Assets 圖示 ,一套是windows11的Segoe Fluent 圖示。

Google有一套開源的Material Design icons的圖示字型,之前是提供下載下傳到本地的,沒找到了Material Design icons by Google。

剩下的就不說了,圖示字型比較多,自己去搜一搜吧!

本例子中使用的是微軟的 Segoe MDL2 Assets 圖示,下圖是網站中圖示字型的部分展示,其中可以看到一個Unicode碼位,這個是用來辨別目前這個字型的,後面也需要用這個來顯示我們的字型。

WPF使用ttf圖示字型

這套圖示字型在Windows10中是自帶的,是以可以直接設定FontFamily屬性為Segoe MDL2 Assets,來獲得圖示的支援:

WPF使用ttf圖示字型

其中Text就是由描述中的Unicode碼位來構成的,不過需要在文本前加上&#x,文本後加上分号;,完整的就是”“。

但是這種方式隻支援Window10系統,如果在其他系統上,就會無法顯示,是以我們下載下傳Segoe MDL2 Assets圖示字型,将下載下傳的壓縮包中的SegMDL2.ttf拷貝到我們的項目,為了友善管理,放到了項目中建立的Fonts檔案夾下:

WPF使用ttf圖示字型

然後選中SegMDL2.ttf在下方的屬性欄中将生成操作改為資源,這樣這個檔案就會以資源的形式包含在我們的WPF程式中:

WPF使用ttf圖示字型

使用圖示字型的方式跟上面是一樣的,但是因為是通過外置字型的形式來添加到WPF程式中的,是以FontFamily設定的屬性值就有點講究了,大概可以表述為pack://application:,,,/項目名稱空間;component/字型路徑/字型檔案名#字型實際名稱,下面來一個一個介紹(後面引用自定義資源檔案也可以參考此規則,不過#字型名稱就不需要了,具體看下方):

項目名稱空間:如果沒有私自改過項目名稱空間,那麼你的項目名稱空間就是項目的名稱,我這裡的項目名稱叫WPF_Blog_Test,是以項目名稱空間也是如此,如果不清楚你的項目名稱空間是什麼,可以打開你的XAML檔案,比如項目中的App.xaml,可以看到xaml檔案中的x:Class屬性,或者背景類的namespace:

WPF使用ttf圖示字型
WPF使用ttf圖示字型

字型路徑/檔案名:字型檔案這裡是放在Fonts檔案夾下的,是以我的字型路徑和檔案名為Fonts/SegMDL2.ttf,檔案名這裡有個小插曲,應使用屬性中顯示的檔案名:

WPF使用ttf圖示字型

字型實際名稱:字型的實際名稱需要我們輕按兩下打開字型,然後才能看到(别再VS中打開,不然看到的是位元組碼,在windows的檔案夾中選中檔案輕按兩下打開),這裡SegMDL2.ttf的實際名稱是Segoe MDL2 Assets:

WPF使用ttf圖示字型

是以FontFamily應該設定為”pack://application:,,,/WPF_Blog_Test;component/Fonts/SegMDL2.ttf#Segoe MDL2 Assets“,貼個代碼,收工!

​ PS:為了不讓每次用都寫這麼長的FontFamily,可以考慮在資源中寫好再引用,或者定義一個TextBlock圖示字型樣式(再扯點),已經了解資源定義的下面可以略過。

建立檔案夾Styles,在該檔案夾下建立資源檔案IconFonts(右鍵Styles,選擇添加資源字典)。兩種方式都寫在IconFonts這個檔案中了,友善示範就少搞點:

WPF使用ttf圖示字型

寫上我們的定義的樣式(代碼在圖檔下方):

WPF使用ttf圖示字型

此時隻是添加了一個名叫IconFonts資源字典,還需要引入到項目中,才能在界面中使用,是以需要在App.xaml檔案中添加一條引用語句,即告知程式需要将建立的這個資源字典包含進來,語句為<ResourceDictionary Source="pack://application:,,,/WPF_Blog_Test;component/Styles/IconFonts.xaml" />,名稱空間和資源路徑規則上面已表述,添加一個App.xaml的截圖:

WPF使用ttf圖示字型

剩下的就是在程式中使用了,直接上代碼

沒想到截了這麼多圖,希望邏輯是清晰的,感謝你的觀看!

本文來自部落格園,作者:醜萌氣質狗,轉載請注明原文連結:https://www.cnblogs.com/choumengqizhigou/p/15550133.html

轉載請注明出處QQ群:560611514