准備工作完成啦,第二步就是去豐富這個控件,多多給它加內容,讓它強大起來。那麼我們雙擊QXSpirit.xaml,窗口中顯示的就是它的界面了,暫時是一片空白的,我們首要添加的當然就是迫不及待想要出世的角色了,所以我們這樣寫:
<UserControl x:Class="WPFGameCourse.Controls.QXSpirit"
XMLns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x=http://schemas.microsoft.com/winfx/2006/xaml XMLns:QXControl="clr-namespace:QX.Game.Controls;assembly=QX">
< Canvas x:Name="Spirit">
< Image x:Name="Body" Width="150" Height="150"/>
< StackPanel Name="Describtion" Width="150" Height="58" Canvas.Top="-21">
< !--門派-->
<QXControl:BorderText x:Name="Faction" Fill="Orchid" FontSize="12" Bold="True" Stroke="Black" StrokeThickness="0.1" Text="娥眉大師姐" Height="13" HorizontalAlignment="Center" />
< !--家族-->
<QXControl:BorderText x:Name="Clan" Fill="DarkOrange" FontSize="12" Bold="True" Stroke="Black" StrokeThickness="0.1" Text="破天一劍" Height="13" HorizontalAlignment="Center" />
< !--名字-->
<QXControl:BorderText x:Name="Name" Fill="SteelBlue" FontSize="12" Bold="True" Stroke="Black" StrokeThickness="0.1" Text="愛在後院前" Height="13" HorizontalAlignment="Center" />
< /StackPanel>
< /Canvas>
< /UserControl>
代碼很簡單,我先定義一個名為Spirit的Canvas主布局控件(為了方便自由定位它內部的其他子控件,所以在選擇上我依然使用我鐘愛的Canvas。當然,你也可以使用別的布局控件作為主控件)。然後在它的內部建立一個名為Body的Image子控件,它就是精靈的身體啦(也就是我們前面章節中一直使用著的Image Spirit=new Image())。游戲中的精靈不光只有身體部分,還包括關於它的很多附加信息顯示在周圍:例如名字、幫派、家族等等。在上面代碼中,我將這3個描述精靈身份的文字控件放在一個名為Describtion,類型為StackPanel的布局控件(該布局控件特點為可以輕松的排列子控件)中並且稍微調整一下它的位置以便在角色身體上方合適的位置顯示(Canvas.Top="-21")。而這3個描述身份的文字控件均為我事先寫好的帶描邊的名為BorderText的控件,該控件同樣編譯封裝在項目源碼中的Dll文件夾中的QX.dll中。在WPF/Silverlight中要引用程序集中的控件,必須在xaml開頭申明它。因此,我們需要在UserControl中寫這樣一句申明:XMLns:QXControl="clr-namespace:QX.Game.Controls;assembly=QX",其中QXControl為下文中引用該控件時需要申明的前綴名稱,clr-namespace和assembly這兩個詞應該不用再解釋了吧,會編程的人都應該知道。需要特別說明的是:這麼幾個字,用TextBlock或Label現成的控件不就行了,何必要勞師動眾那麼誇張自己去寫個控件來實現?對WPF/Silverlight中的中文字有一定了解的朋友都知道,在WPF/Silverlight中,文字都是矢量的,它在顯示時被處理過(仿佛像是Photoshop中的文字銳利效果),因此顯得模糊不清。例如假設我將本例的3個描述身份控件全用TextBlock來替換,那麼效果將如下圖: