WPF自定义控件与样式(1)-矢量字体图标(iconfont)
一.圖標(biāo)字體
圖標(biāo)字體在網(wǎng)頁開發(fā)上運(yùn)用非常廣泛,具體可以網(wǎng)絡(luò)搜索了解,網(wǎng)頁上的運(yùn)用有很多例子,如Bootstrap。但在C/S程序中使用還不多,字體圖標(biāo)其實就是把矢量圖形打包到字體文件里,就像使用一般外置字體一樣的使用,因此Winform、WPF中都是可以用的。
在我們多個WPF項目中廣泛使用了圖標(biāo)字體,包括自定義控件、自定義樣式、模板等。總結(jié)下:
- 網(wǎng)上開源字體圖標(biāo)很多,很容易獲取,項目開發(fā)中需要的絕大部分圖標(biāo)都可以找到,非常方便,推薦 阿里巴巴開源字體;
- 字體文件非常小,比使用png等圖片文件要小很多;
- 比使用普通圖片資源性能要好很多;
- 和普通字體一樣,是矢量的,可任意放大縮小(設(shè)置字體大小)不失真。
- 唯一的缺點(diǎn)就是顏色的設(shè)置有局限,只能用單色,或者使用畫刷實現(xiàn)漸變色等效果。不過這一點(diǎn)貌似問題也不大。
二.WPF中如何使用字體圖標(biāo)
2.1 字體文件加入到項目資源
下載字體文件(參考第三節(jié)),添加到項目中,并設(shè)置生成操作為"Resource",如下圖:
2.2 定義樣式
定義樣式,使用TextBlock作為圖標(biāo)顯示的容器,因此定義一個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/#SK2015"></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="" Style="{StaticResource FIcon}" FontSize="30" Margin="3" ></TextBlock><TextBlock Text="" Style="{StaticResource FIcon}" FontSize="40" Margin="3" ></TextBlock><TextBlock Text="" Style="{StaticResource FIcon}" FontSize="50" Margin="3" Foreground="#FB0AE8"></TextBlock><TextBlock Text="" Style="{StaticResource FIcon}" FontSize="60" Margin="3" Foreground="Chartreuse"></TextBlock><TextBlock Text="" Style="{StaticResource FIcon}" FontSize="70" Margin="3" Foreground="#FEDB11"></TextBlock></StackPanel>效果:
直接使用字符編碼可能不好記,web開發(fā)中會為每個字體圖標(biāo)定義一個好記的名稱,如<i class="icon book"></i>。他是利用css定義的樣式實現(xiàn)的,在WPF中當(dāng)然也是可以實現(xiàn)的,為每個字體圖標(biāo)單獨(dú)定義Style即可。只是我覺得沒有必要,這樣也挺簡單的,有網(wǎng)頁demo.html可以對照。
2.4 C#代碼使用示例
C#代碼唯一不一樣的,就是對Unicode字符編碼的使用不一樣,如:
//代碼設(shè)置字體圖標(biāo)this.ticon1.Text = "\ue616";this.ticon2.Text = "\ue615";效果:
三 .如何下載字體文件
3.1 下載網(wǎng)上的開源字體庫
如Font-Awesome(http://fortawesome.github.io/Font-Awesome/),類似的開源字體庫有很多,提供的圖標(biāo)比較豐富,但不容易擴(kuò)展和修改。
3.2 Iconfont-阿里巴巴矢量圖標(biāo)庫
地址:http://www.iconfont.cn/
提供了大量的字體圖標(biāo)(包括網(wǎng)友共享的),可以選擇需要的字體,然后打包到一個字體文件,且可以隨意修改字符的編碼、字體名稱等,真的是一個良心的開源項目。
收集并下載圖標(biāo)字體庫,如下圖。
下載后,如下圖,其中*.ttf就是我們需要的字體文件,其他是網(wǎng)頁使用需要的,demo.html可以作為圖例參考,demo.html內(nèi)容同上圖類似。
附錄:參考引用
做小圖標(biāo)還用sprite圖?你out了!史上最簡單易懂iconfont使用教程
學(xué)習(xí)WPF——使用Font-Awesome圖標(biāo)字體
?
版權(quán)所有,文章來源:http://www.cnblogs.com/anding
個人能力有限,本文內(nèi)容僅供學(xué)習(xí)、探討,歡迎指正、交流。
總結(jié)
以上是生活随笔為你收集整理的WPF自定义控件与样式(1)-矢量字体图标(iconfont)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: php如何在某个时间上加一天?一小时?
- 下一篇: PropertyGrid控件 分类(Ca