對於英語,我常常不知道怎么發音是正確的,雖然有很多軟件像有道、靈格斯、金山詞霸等都有閱讀的功能,但發揮下程序員的精神,自己動手用WPF寫了一個。
對於Windows系統來說,其實已經內置了這一個功能,就是屏幕講述人。微軟則把這個功能封裝好了,我們只要調用就行,關鍵代碼:
引用命名空間:
using System.Speech.Synthesis;
使用其命名空間下的類,toSpell是要讀的字符串:
SpeechSynthesizer synthesizer = new SpeechSynthesizer();
synthesizer.SpeakAsync(toSpell);
使用的是異步調用,避免用戶界面阻塞。
Windows Media Player 的播放工具條,有特效,也模仿了這個特效。其實,就是用WPF中的事件觸發器(EventTrigger)和動畫(Animation)很容易實現。
View Code
<Grid DataContext="{StaticResource viewModel}">
<!-- Animation for the buttons.-->
<Grid.Triggers>
<EventTrigger RoutedEvent="MouseEnter">
<EventTrigger.Actions>
<BeginStoryboard >
<Storyboard TargetProperty="Opacity" TargetName="borderPanel">
<DoubleAnimation From="0" To="1" Duration="0:0:2"/>
</Storyboard>
</BeginStoryboard>
</EventTrigger.Actions>
</EventTrigger>
<EventTrigger RoutedEvent="MouseLeave">
<EventTrigger.Actions>
<BeginStoryboard>
<Storyboard TargetProperty="Opacity" TargetName="borderPanel">
<DoubleAnimation From="1" To="0" Duration="0:0:2"/>
</Storyboard>
</BeginStoryboard>
</EventTrigger.Actions>
</EventTrigger>
</Grid.Triggers>
控制的是按鈕所在的Border的透明度,Opacity屬性。當鼠標進入我們要監控的區域時,在2秒事件內,使透明度從0到1,即顯示出來;當鼠標離開我們要監控的區域時,同樣時間內,使透明度從1變為0,即不可見。
下面是程序剛啟動時的截圖,注意鼠標在監控的Grid控件內:

當我們使鼠標離開時,則會使Paly、Pause按鈕所在的工具條消失:

正常播放時,可以使Pause變可用,Play按鈕變灰:

程序編譯環境 VS2010 + .NET 4 + WPF,運行系統須為Windows Vista 及其上
