天天看點

WPF自定義控件與樣式(1)-矢量字型圖示(iconfont)

一.圖示字型

  圖示字型在網頁開發上運用非常廣泛,具體可以網絡搜尋了解,網頁上的運用有很多例子,如Bootstrap。但在C/S程式中使用還不多,字型圖示其實就是把矢量圖形打包到字型檔案裡,就像使用一般外置字型一樣的使用,是以Winform、WPF中都是可以用的。

  在我們多個WPF項目中廣泛使用了圖示字型,包括自定義控件、自定義樣式、模闆等。總結下:

  • 網上開源字型圖示很多,很容易擷取,項目開發中需要的絕大部分圖示都可以找到,非常友善,推薦 阿裡巴巴開源字型;
  • 字型檔案非常小,比使用png等圖檔檔案要小很多;
  • 比使用普通圖檔資源性能要好很多;
  • 和普通字型一樣,是矢量的,可任意放大縮小(設定字型大小)不失真。
  • 唯一的缺點就是顔色的設定有局限,隻能用單色,或者使用畫刷實作漸變色等效果。不過這一點貌似問題也不大。

二.WPF中如何使用字型圖示

2.1 字型檔案加入到項目資源

  下載下傳字型檔案(參考第三節),添加到項目中,并設定生成操作為"Resource",如下圖:

  

WPF自定義控件與樣式(1)-矢量字型圖示(iconfont)
WPF自定義控件與樣式(1)-矢量字型圖示(iconfont)

2.2 定義樣式

  定義樣式,使用TextBlock作為圖示顯示的容器,是以定義一個TextBlock的樣式即可,如下所示。其中“SK2015” 為字型名稱,如3.2中的圖示,可以通過“編輯項目”修改字型名稱。

1 <!--FIcon--> 
 2 
 3  <Style x:Key="FIcon" TargetType="TextBlock"> 
 4 
 5  <Setter Property="FontFamily" Value="/K.Framework.Controls;component/Resources/#SF2015"></Setter> 
 6 
 7  <Setter Property="Foreground" Value="{StaticResource TextForeground}"/> 
 8 
 9  <Setter Property="TextAlignment" Value="Center"/> 
10 
11  <Setter Property="HorizontalAlignment" Value="Center"/> 
12 
13  <Setter Property="VerticalAlignment" Value="Center"/> 
14 
15  <Setter Property="FontSize" Value="20"/> 
16 
17  </Style>       

2.3 XAML使用示例

  使用就很簡單了,第一種在XAML中使用,如下圖,Text的值可以參考3.2中的demo.html,它是字元的Unicode編碼。

<StackPanel Orientation="Horizontal">
            <TextBlock Text="&#xe600;" Style="{StaticResource FIcon}" FontSize="30" Margin="3" ></TextBlock>
            <TextBlock Text="&#xe61c;" Style="{StaticResource FIcon}" FontSize="40" Margin="3" ></TextBlock>
            <TextBlock Text="&#xe63d;" Style="{StaticResource FIcon}" FontSize="50" Margin="3" Foreground="#FB0AE8"></TextBlock>
            <TextBlock Text="&#xe602;" Style="{StaticResource FIcon}" FontSize="60" Margin="3" Foreground="Chartreuse"></TextBlock>
            <TextBlock Text="&#xe60c;" Style="{StaticResource FIcon}" FontSize="70" Margin="3" Foreground="#FEDB11"></TextBlock>
        </StackPanel>      

  效果:

WPF自定義控件與樣式(1)-矢量字型圖示(iconfont)

  直接使用字元編碼可能不好記,web開發中會為每個字型圖示定義一個好記的名稱,如<i class="icon book"></i>。他是利用css定義的樣式實作的,在WPF中當然也是可以實作的,為每個字型圖示單獨定義Style即可。隻是我覺得沒有必要,這樣也挺簡單的,有網頁demo.html可以對照。

2.4 C#代碼使用示例

  C#代碼唯一不一樣的,就是對Unicode字元編碼的使用不一樣,如:

//代碼設定字型圖示
            this.ticon1.Text = "\ue616";
            this.ticon2.Text = "\ue615";      
WPF自定義控件與樣式(1)-矢量字型圖示(iconfont)

三 .如何下載下傳字型檔案

3.1 下載下傳網上的開源字型庫

  如Font-Awesome(http://fortawesome.github.io/Font-Awesome/),類似的開源字型庫有很多,提供的圖示比較豐富,但不容易擴充和修改。

WPF自定義控件與樣式(1)-矢量字型圖示(iconfont)

3.2 Iconfont-阿裡巴巴矢量圖示庫

  位址:http://www.iconfont.cn/

  提供了大量的字型圖示(包括網友共享的),可以選擇需要的字型,然後打包到一個字型檔案,且可以随意修改字元的編碼、字型名稱等,真的是一個良心的開源項目。

  收集并下載下傳圖示字型庫,如下圖。

WPF自定義控件與樣式(1)-矢量字型圖示(iconfont)

  下載下傳後,如下圖,其中*.ttf就是我們需要的字型檔案,其他是網頁使用需要的,demo.html可以作為圖例參考,demo.html内容同上圖類似。

WPF自定義控件與樣式(1)-矢量字型圖示(iconfont)

附錄:參考引用

做小圖示還用sprite圖?你out了!史上最簡單易懂iconfont使用教程

學習WPF——使用Font-Awesome圖示字型

系列文章目錄   

WPF自定義控件與樣式(1)-矢量字型圖示(iconfont)

WPF自定義控件與樣式(2)-自定義按鈕FButton

WPF自定義控件與樣式(3)-TextBox & RichTextBox & PasswordBox樣式、水印、Label标簽、功能擴充

WPF自定義控件與樣式(4)-CheckBox/RadioButton自定義樣式

WPF自定義控件與樣式(5)-Calendar/DatePicker日期控件自定義樣式及擴充

WPF自定義控件與樣式(6)-ScrollViewer與ListBox自定義樣式

WPF自定義控件與樣式(7)-清單控件DataGrid與ListView自定義樣式

WPF自定義控件與樣式(8)-ComboBox與自定義多選控件MultComboBox

WPF自定義控件與樣式(9)-樹控件TreeView與菜單Menu-ContextMenu

WPF自定義控件與樣式(10)-進度控件ProcessBar自定義樣 

WPF自定義控件與樣式(11)-等待/忙/正在加載狀态-控件實作

WPF自定義控件與樣式(12)-縮略圖ThumbnailImage /gif動畫圖/圖檔清單

WPF自定義控件與樣式(13)-自定義窗體Window & 自适應内容大小消息框MessageBox

WPF自定義控件與樣式(14)-輕量MVVM模式實踐 

WPF自定義控件與樣式(15)-終結篇

版權所有,文章來源:http://www.cnblogs.com/anding

個人能力有限,本文内容僅供學習、探讨,歡迎指正、交流。

繼續閱讀