1. 程式人生 > >一些WPF中的濾鏡特效——Effect Library

一些WPF中的濾鏡特效——Effect Library

預覽 -s 基本 發的 詳細 div dem -h demo

原文:一些WPF中的濾鏡特效——Effect Library

WPF支持類似PhotoShop的濾鏡功能,稱之為Effect。在.Net 4.0中,WPF就廢棄了對BitMapEffect的支持,轉向使用支持GPU加速的Effect類,例如,我們可以使用如下代碼生成帶有陰影效果的按鈕。

1 <Button ... >
2     <Button.Effect>
3         <DropShadowEffect />
4     </Button.Effect>
5     Hello
6 </Button>

系統已經自帶了十來種Effect,基本上能滿足我們的大部分的處理要求。如果有HLSL基礎,我們可以寫出自己的特效。MSDN的如下兩篇文章詳細的介紹了這一過程:

  • GPU-accelerated custom effects for WPF
  • Writing custom GPU-based Effects for WPF

微軟也自己提供了一些特效庫WPF Effects Library,這個庫在Channel 9上可以預覽,它提供了許多常用的濾鏡特效:如銳化、高光、扭曲、模糊、高光等,另外,還提供了一系列過渡特效,如百葉窗、溶解、旋轉、縮放等。可以方便我們打造炫酷的WPF程序。也支持Sliverlight,不過蛋疼的WinRT是不支持Effect的,WinRT的API和WPF比起來簡直弱爆了,期待Win10版本的Metro程序等多開放一些API吧,否則確實很提不起什麽開發的動力來。

這個庫編譯起來比較麻煩(有的地方用VS2013編譯不過去),因此我這裏上傳了一個編譯好了的一個版本 點擊下載。需要說明的是:

  1. 原始工程中內置了許多預覽圖片,導致體積較大,因此我去掉了內置的位圖,TransitionEffects使用的是本地"我的圖片"文件夾中的jpg 格式文件,如果該文件夾中沒有圖片的時候,則無法預覽。
  2. TransitionEffects工程中使用了幾張png文件作為蒙版,導致該庫的體積達到了2m(感覺這些蒙版完全可以運行時生成,不知道為什麽沒有這麽做),發布不是很方便。因此我編譯了一個去掉了這些圖片的版本。

由於整個工程較大,我上傳到了百度網盤上了:點擊下載。

一些WPF中的濾鏡特效——Effect Library