原创 [UWP]使用AlphaMaskEffect提升故障藝術動畫的性能(順便介紹怎麼使用性能探測器分析UWP程序)

前幾天發佈了抄抄《CSS 故障藝術》的動畫這篇文章,在這篇文章裏介紹瞭如何使用Win2D繪製文字然後配合BlendEffect製作故障藝術的動畫。本來打算就這樣收手不玩這個動畫了,但後來又發現性能不符合理想。明明只是做做Resiz

原创 [WPF]總結一些我在開發WPF時常用的工具

我從一萬二千年前開始寫XAML,這麼多年用了很多各式各樣的工具,現在留在電腦裏的、現在還在用的、在寫WPF時用的也就那麼幾個。這篇文章總結了這些工具,希望這些工具可以讓WPF開發者事半功倍。 1. Visual Studio V

原创 [UWP]用畫中畫模式(CompactOverlay Mode)讓用總在最前端顯示

1. 什麼是,以及怎麼用畫中畫 Windows 10 Creators Update以後UWP提供了一個新的視圖模式CompactOverlay,中文翻譯成 緊湊的覆蓋層?反正大部分時間我們都會稱它爲畫中畫模式。 上圖中右上角即

原创 [UWP]使用CompositionLinearGradientBrush實現漸變畫筆並製作動畫

1. 什麼是 CompositionBrush CompositionBrush(合成畫筆)是操作可視化層時用於繪製 SpriteVisual 區域的畫筆。 使UWP 應用時可以選擇使用 XAML 畫筆或 CompositionB

原创 [WPF自定義控件庫] 模仿UWP的ProgressRing

1. 爲什麼需要ProgressRing 雖然我認爲這個控件庫的控件需要模仿Aero2的外觀,但總有例外,其中一個就是ProgressRing。ProgressRing是來自UWP的控件,部分代碼參考了 這裏。ProgressRi

原创 [UWP]佔領標題欄

1. 前言 每一個有理想的UWP應用都會打標題欄的注意,尤其當微軟提供 將 Acrylic 擴展到標題欄 這個功能後,大部分Windows 10的原生應用都不乖了,紛紛佔領了標題欄的一畝三分地。這篇博客將介紹在UWP中如何自定義標

原创 [WPF自定義控件庫] 給WPF一個HyperlinkButton

1. 在WPF怎麼在UI上添加超級鏈接 這篇文章的目的是介紹怎麼在WPF裏創建自定義的HyperlinkButton控件。很神奇的,WPF居然連HyperlinkButton都沒有,不過它提供了另一種方式用於在UI上添加超級鏈接:

原创 [WPF自定義控件庫]自定義Expander

1. 前言 上一篇文章介紹了使用Resizer實現Expander簡單的動畫效果,運行效果也還好,不過只有展開/摺疊而缺少了淡入/淡出的動畫(畢竟Resizer模仿Expander只是附帶的功能)。這篇繼續Measure的話題,自

原创 [WPF自定義控件庫]好用的VisualTreeExtensions

1. 前言 A long time ago in a galaxy far, far away…微軟在Silverlight Toolkit裏提供了一個好用的VisualTreeExtensions,裏面提供了一些查找Visual

原创 [WPF自定義控件庫]瞭解WPF的佈局過程,並利用Measure爲Expander添加動畫

1. 前言 這篇文章介紹WPF UI元素的兩步佈局過程,並且通過Resizer控件介紹只使用Measure可以實現些什麼內容。 我不建議初學者做太多動畫的工作,但合適的動畫可以引導用戶視線,提升用戶體驗。例如上圖的這種動畫,這種

原创 [UWP]從頭開始創建併發佈一個番茄鍾

1. 自己用的番茄鍾自己做 在PC上我一直使用“小番茄”作爲我的番茄鍾軟件,我把它打開後放在副顯示器最大化,這樣不僅可以讓它盡到本分,而且還可以告訴我的同事“我正在專心工作”。可是我總是嫌棄它的手感不夠愉悅,總想自己寫一個番茄鍾軟

原创 [WPF自定義控件庫]使用TextBlockHighlightSource強化高亮的功能,以及使用TypeConverter簡化調用

1. 強化高亮的功能 上一篇文章介紹了使用附加屬性實現TextBlock的高亮功能,但也留下了問題:不能定義高亮(或者低亮)的顏色。爲了解決這個問題,我創建了TextBlockHighlightSource這個類,比單純的字符串存

原创 [WPF自定義控件庫]排序、篩選以及高亮

1. 如何讓列表的內容更容易查找 假設有這麼一個列表(數據源在本地),由於內容太多,要查找到其中某個想要的數據會比較困難。要優化這個列表,無非就是排序、篩選和高亮。 改造過的結果如上。 2. 排序 在WPF中要實現數據排序的功

原创 [WPF自定義控件庫]爲Form和自定義Window添加FunctionBar

1. 前言 我常常看到同一個應用程序中的表單的按鈕————也就是“確定”、“取消”那兩個按鈕————實現得千奇百怪,其實只要使用統一的Style起碼就可以統一按鈕的大小,而我喜歡更進一步將”確定“、”取消“或其它按鈕封裝進一個自定

原创 [WPF自定義控件庫] 自定義控件的代碼如何與ControlTemplate交互

1. 前言 WPF有一個靈活的UI框架,用戶可以輕鬆地使用代碼控制控件的外觀。例設我需要一個控件在鼠標進入的時候背景變成藍色,我可以用下面這段代碼實現: protected override void OnMouseEnter(M