WPF学习笔记(03) - 华丽的HelloWorld
上次的HelloWorld根本不能發(fā)揮WPF的威力,這次我們來做一個(gè)真正體驗(yàn)WPF魅力的程序。不過我們要請(qǐng)來一款重量級(jí)的設(shè)計(jì)工具——Microsoft Expression Blend 2。
Blend用于設(shè)計(jì)人員進(jìn)行專業(yè)和復(fù)雜的界面設(shè)計(jì)工作,可以與Visual Studio相輔相成,替代Visual Studio的界面編輯器,至于程序功能設(shè)計(jì)方面依然由Visual Studio擔(dān)此重任。
?
1、打開工程文件
使用上次的工程文件,對(duì)上次的HelloWorld進(jìn)行界面改良。打開Expression Blend 2,在項(xiàng)目一頁(yè)中選擇項(xiàng)目,再選擇打開項(xiàng)目,打開上次的解決方案文件。或者在文件菜單中選擇打開項(xiàng)目/解決方案。
?
不錯(cuò),我們上次設(shè)計(jì)的窗口已經(jīng)顯示出來了。需要留意的是左面“對(duì)象和時(shí)間線”窗格,這里列出了控件元素樹(體驗(yàn)了UI元素的包含關(guān)系),我們可以在里面選擇我們要修改的控件。右面是屬性區(qū),不要怕太復(fù)雜,其實(shí)和VS里面的屬性表是基本相同的,不過提供了很多方便修改效果的工具(比如類似PS的顏色盤)。還有看到設(shè)計(jì)區(qū)滾動(dòng)條旁邊的設(shè)計(jì)/XAML按鈕嗎?這里可以在界面和代碼之間進(jìn)行切換。
?
?
2、修改Hello World文字效果
大家一定注意到Hello World的TextBlock不見了,原因是我們?cè)O(shè)計(jì)了默認(rèn)隱藏,我們要先把它顯示出來,再添加效果。首先,在“對(duì)象和時(shí)間線”窗格選擇textBlock1,然后在右面的“屬性”窗格中尋找Visibility屬性,然后改為Visible。如下圖所示:
???????
大家一定注意到我們修改一項(xiàng)屬性后,旁邊會(huì)有一個(gè)小白色方塊出現(xiàn),這表示這項(xiàng)屬性在XAML代碼中出現(xiàn)了。如果我們需要把該屬性改為默認(rèn)的話,只需要按這個(gè)小方塊,然后選擇“重置”就OK了。
好了,現(xiàn)在我們要為文字添加效果了,來個(gè)發(fā)光文字怎么樣?首先,我們?cè)趯傩源案?#xff0c;點(diǎn)擊外觀的框下面的下拉箭頭,然后在BitmapEffect一欄里,點(diǎn)擊“新建”按鈕旁的下拉箭頭,選擇外發(fā)光,在滑出的設(shè)置框中隨便設(shè)置顏色和參數(shù)吧,看看效果如何,還不錯(cuò)嘛。
???????
?
3、修改窗口背景
白白的背景不怎么好看,現(xiàn)在來改一改背景,但不要單調(diào)的,幸好WPF的著色支持復(fù)雜的漸變效果,這下我們可以搞些顏色豐富生動(dòng)的界面了。
首先點(diǎn)擊空白處,選擇整個(gè)Windows對(duì)象,然后再屬性窗格,選擇Blackground屬性,下面我們將選擇漸變畫筆(畫筆是一種著色模式)。你可以像使用PS一樣定制下方的漸變條,增刪滑塊和修改顏色。
???????
?
4、修改按鈕的模樣
其實(shí)這個(gè)按鈕還是系統(tǒng)按鈕的老樣子,能不能想一些播放器和游戲之類的軟件有自己模樣的按鈕呢?在WPF不單可以,而且實(shí)現(xiàn)并不復(fù)雜,不過需要一定的XAML代碼構(gòu)成的知識(shí),并且對(duì)WPF的可視化元素有一定的了解,不過時(shí)間還多著呢,可以慢慢學(xué)習(xí)嘛,我們先來給這個(gè)Button修改一段代碼,讓大家體會(huì)一下效果吧。
切換到XAML代碼編輯器,大家參照下面的代碼修改你的界面(下面列出了Grid元素下的代碼):
<Grid><Grid.Resources><ControlTemplate x:Key="ButtonTemplate" TargetType="{x:Type Button}"><Border x:Name="Border" Background="White" CornerRadius="4"><ContentPresenter VerticalAlignment="Center" HorizontalAlignment="Center" /></Border><ControlTemplate.Triggers><Trigger Property="IsMouseOver" Value="True"><Setter TargetName="Border" Property="Background" Value="Gold" /></Trigger><Trigger Property="IsPressed" Value="True"><Setter TargetName="Border" Property="Background" Value="Orange" /></Trigger></ControlTemplate.Triggers></ControlTemplate></Grid.Resources><TextBlock Margin="103,64,107,0" Name="textBlock1" Text="Hello, World!!" FontSize="24" TextDecorations="None" VerticalAlignment="Top" Visibility="Visible" ><TextBlock.BitmapEffect><OuterGlowBitmapEffect GlowColor="#FF73F2FF" GlowSize="12" Opacity="0.795"/></TextBlock.BitmapEffect></TextBlock><Button Height="37" Margin="103,0,118,47" Name="button1" VerticalAlignment="Bottom" Click="button1_Click" Template="{StaticResource ButtonTemplate}" FontSize="18" FontWeight="Bold">Say Hello</Button></Grid>切換回設(shè)計(jì)界面,怎么樣,雖然這個(gè)按鈕比較簡(jiǎn)單,不怎么好看,但至少改變了那個(gè)老模樣了,花點(diǎn)心思還是可以做出漂亮的按鈕的。
?
5、添加動(dòng)畫效果
這個(gè)效果就震撼了,WPF有Storyboard功能,幫助大家構(gòu)建復(fù)雜的動(dòng)畫效果,以前編程序,搞個(gè)動(dòng)畫效果像登天般困難,現(xiàn)在可以像做Flash動(dòng)畫那樣做了。不會(huì)Flash?不用怕,一下子就可以上手了。
我們需要做到的是,在點(diǎn)擊按鈕后,出現(xiàn)HelloWorld,為了讓這個(gè)過程更加動(dòng)態(tài)和柔和,我們建立像PowerPoint的文字漸現(xiàn)上升效果。首先點(diǎn)擊目標(biāo)button1,因?yàn)檫@個(gè)是動(dòng)畫觸發(fā)器。在左上角的“觸發(fā)器”框中點(diǎn)擊“+事件”。選擇在引發(fā)button1 Click時(shí),然后點(diǎn)擊右面的“+”號(hào)添加新的操作。這是Blend會(huì)詢問你是否需要新建故事板(storyboard)。故事板是所有UI元素活動(dòng)的時(shí)間線,可以看作“一場(chǎng)動(dòng)畫”。確定后元素樹的時(shí)間線出現(xiàn)了,如下圖所示。
?????
我們現(xiàn)在開始建立動(dòng)畫。建立動(dòng)畫的基本要領(lǐng)就是確定關(guān)鍵幀,然后在關(guān)鍵幀上設(shè)置對(duì)象的外觀屬性,關(guān)鍵幀與關(guān)鍵幀之間的過程是屬性值漸變的過程。對(duì)于設(shè)計(jì)者而言,設(shè)計(jì)后關(guān)鍵幀就行了,中間的過程變化將會(huì)由程序自動(dòng)生成。如果你有Flash動(dòng)畫制作經(jīng)驗(yàn)的話,這個(gè)簡(jiǎn)直小菜一碟。
如下圖所示,我們點(diǎn)擊時(shí)間旁邊的 再開始的時(shí)候添加一個(gè)關(guān)鍵幀。然后把HelloWorld往下移動(dòng)一點(diǎn),然后把外觀屬性框中的Opacity(透明度)屬性調(diào)到0%。
?????????
接著拖動(dòng)時(shí)間線里面黃色拉桿上的三角形,在1秒的位置新建一個(gè)關(guān)鍵幀,然后點(diǎn)擊這個(gè)關(guān)鍵幀的橢圓小標(biāo)記。拖動(dòng)HelloWorld上移一點(diǎn)(雖然看不見,但仍可以拖動(dòng),會(huì)出現(xiàn)藍(lán)色邊框作為標(biāo)記),然后把外觀屬性框中的Opacity(透明度)屬性調(diào)到100%。????
?
??????????
動(dòng)畫建立完畢了,可以點(diǎn)擊時(shí)間線上的播放按鈕預(yù)覽動(dòng)畫。最后點(diǎn)擊+號(hào)旁邊的 關(guān)閉時(shí)間線。
?
6、運(yùn)行
?
?
?
最后我們還需要把textBlock的Visibility屬性,然后改為Hidden。這樣就完成了。
激動(dòng)人心的時(shí)刻終于來臨了,快點(diǎn)按F5,進(jìn)行調(diào)試運(yùn)行。怎么樣,這個(gè)HelloWorld夠華麗的嘛!
?
7、一點(diǎn)說明
有沒有試過在使用Blend時(shí),切換會(huì)Visual Studio,它會(huì)馬上詢問你是否更新代碼或者界面。對(duì),兩個(gè)工具是可以互相更新的,確保同時(shí)修改一個(gè)項(xiàng)目時(shí)不會(huì)出現(xiàn)混亂。
源文件可以在這里下載:Masson_WPF_02HelloWorld_v2_source.rar
轉(zhuǎn)載于:https://www.cnblogs.com/masson/archive/2009/09/17/1568346.html
總結(jié)
以上是生活随笔為你收集整理的WPF学习笔记(03) - 华丽的HelloWorld的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 找工作的真相
- 下一篇: 三维图----2(房子)