WPF使用FontAwesome字體圖標_第1頁
WPF使用FontAwesome字體圖標_第2頁
WPF使用FontAwesome字體圖標_第3頁
全文預覽已結束

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

第WPF使用FontAwesome字體圖標在WPF程序中,一般接觸到的矢量圖標資源有XAML、SVG、字體這三種格式。XAML是標準格式就不說了,SVG并不是直接支持的,不過微軟提供了ExpressionDesign可以非常方便我們將其轉換為XAML格式的資源。而對于字體,雖然WPF是直接支持的,但由于字體圖標其特殊性,要將其顯示為圖標還是需要費點勁的。本文這里就以Font-Awesome為例,介紹一下如何在WPF中使用字體圖標。

首先添加一個樣式,為了使用方便,建議直接做為全局樣式:

Stylex:Key="FontAwesome"

SetterProperty="TextElement.FontFamily"Value="pack://application:,,,/Resource/#FontAwesome"/

SetterProperty="TextElement.FontSize"Value="14"/

/Style

請注意我這里的FontFamily的設置,我是采用的嵌入字體的方式,這樣在沒有裝該字體的機器上也是能正確顯示圖標的。

然后就可以直接使用該樣式了:

Grid

TextBlockText="#xf0c2;"Foreground="Blue"

VerticalAlignment="Center"HorizontalAlignment="Center"FontSize="22"/

/Grid

運行后可以得到如下圖標了:

原理并不復雜,將TextBlock的Text設置為圖標對應的文字,設置其FontFamily為FontAwesome即可。但這里有一個小的知識點就是:一般來說,fortawesome之類的圖標字體中圖標對應的文字都是不可以通過輸入法直接輸入的,只能直接輸入Unicode編碼,WPF在XAML中使用Unicode編碼輸入的方式和HTML是一樣的,例如0xf0c2就對應為#xf0c2;。

除了TextBlock外,我這里寫的樣式可以應用于任何支持字體顯示的控件的:

StackPanel

LabelContent="#xf0c2;"/

ButtonContent="#xf0c2;"/

ContentControlContent="#xf0c2;"/

/StackPanel

運行后效果如下:

最后一個問題就是如何找到我們的圖標和對應的Unicode編碼了,雖然可以通過安裝字體后通過字符映射表查詢,但是這樣只能看到圖形,而我們更希望先根據(jù)文字描述找圖形,再根據(jù)圖形找對應的十六進制值。好在一般那些字體圖標網(wǎng)站上都列舉了其對應關系的。對于fortawesome字體,直接訪如下網(wǎng)頁即可:http://fortawesome.github.io/Font-Awesome/cheatsheet/

或者,也可以使用我這里寫的一個XAML擴展,將Font-awsome的字體轉換了為枚舉。這樣可以在代碼中使用名字了,程序可讀性要好得多。

classFontValueMarkupExtension:MarkupExtension

publicFontDescriptionFont{get;set;}

publicoverrideobjectProvideValue(IServiceProviderserviceProvider)

varcharactor=typeof(FontDescription).GetField(Font.ToString()

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論