遊戲物件(主角、NPC、怪物、坐騎、障礙物)屬性繁多:座標、名稱、門派、家族、血條、藍條、屬性、裝備、狀態、線程參數等。若全塞進 Tag 字串,解析效率低、擴展性差、維護困難。WPF/Silverlight 的用戶控件天生支援依賴屬性、視覺樹、樣式、模板、動畫、繫結,是封裝遊戲實體的最佳載體。
ControlsQXSpirit.xamlQXSpirit 類別,命名空間 WPFGameCourse.Controls<UserControl x:Class="WPFGameCourse.Controls.QXSpirit"
xmlns="https://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="https://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 自動垂直排列 -->
<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>
Canvas.Left/Top/ZIndex),適合遊戲實體自由移動。Source 實現幀動畫。Canvas.Top="-21" 懸浮於角色頭頂,內含三行資訊(門派、家族、名字),自動垂直排版。xmlns:QXControl="clr-namespace:QX.Game.Controls;assembly=QX",使用其中的 BorderText 控件。WPF/Silverlight 採用向量字體渲染,小字號(如 12px)TextBlock/Label 顯示偏模糊,缺乏銳利感,影響遊戲 UI 質感。
在文字繪製時加入 描邊:Stroke(顏色)+ StrokeThickness(粗細,double 型支援亞像素)。描邊顏色通常為黑或深色,填充色為亮色,形成類似 Photoshop「描邊」效果,大幅提升可讀性與美觀度。
| 控件 | 設定 | 視覺效果 |
|---|---|---|
| TextBlock | FontSize=12, Foreground=Pink | 邊緣模糊、筆畫虛浮 |
| BorderText | FontSize=12, Fill=Pink, Stroke=Black, StrokeThickness=0.1 | 筆畫銳利、對比度高、類似位圖字體 |
| BorderText (大字) | FontSize=48, Fill=Pink, Stroke=Black, StrokeThickness=1.5 | 極具藝術感的描邊標題字體 |