首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> 關於C語言

C# 開發 WPF/Silverlight 動畫與遊戲教學 (43-3):QXIcon 控件增強與魔法數據結構

     編輯:關於C語言

QXIcon 控件功能擴充:ToolTip 美化與魔法系統數據設計

為支援右鍵魔法選單,對 QXIcon 進行兩項關鍵增強:自適應 ToolTip 樣式與新增 IconTypes.Highlights 模式。

一、自適應 ToolTip 樣式

ToolTip 背景根據文字長寬自動調整,採用 40% 透明度黑色圓角矩形:

public string Tip {
    get { return Details.Text; }
    set {
        Details.Text = value;
        DialogBack.Width = Details.ActualWidth + 10;
        DialogBack.Height = Details.ActualHeight + 10;
    }
}

XAML 定義:

<ToolTipService.ToolTip>
  <ToolTip>
    <ToolTip.Template>
      <ControlTemplate>
        <ContentPresenter Content="{TemplateBinding Content}"/>
      </ControlTemplate>
    </ToolTip.Template>
    <ToolTip.Content>
      <Canvas x:Name="Dialog">
        <Rectangle x:Name="DialogBack" Fill="Black" RadiusX="7" RadiusY="7" 
          Stroke="Gray" StrokeThickness="2" Opacity="0.4" />
        <TextBlock x:Name="Details" Foreground="Snow" TextWrapping="Wrap" Width="150" Canvas.Left="5" Canvas.Top="5" />
      </Canvas>
    </ToolTip.Content>
  </ToolTip>
</ToolTipService.ToolTip>
自適應 ToolTip 效果
圖 1:自適應寬高的 ToolTip 樣式

二、魔法數據結構與初始化

public class Magic {
    public int Code { get; set; }   // 代號
    public int Level { get; set; }  // 等級
    public string Name { get; set; } // 名稱含描述
}

List availableMagic = new List();

// 初始化 6 種魔法,每種 9 級
availableMagic.Clear();
for (int i = 0; i < 6; i++) {
    availableMagic.Add(new Magic() {
        Code = i,
        Level = 9,
        Name = string.Format("名稱:{0}\r\n描述:{1}",
            Super.GetXElement(Data.Settings["Arguments"], "Magic", "Code", i.ToString()).Attribute("Name").Value,
            Super.GetXElement(Data.Settings["Arguments"], "Magic", "Code", i.ToString()).Attribute("Description").Value)
    });
}

魔法資料來源為 XML 設定檔,包含名稱與描述兩層資訊,支援多語系擴充。

三、Silverlight Toolkit WrapPanel 整合

引用 System.Windows.Controls.Toolkit.dll (112KB) 獲得 WrapPanel,源自 CodePlex 開源專案。除 WrapPanel 外還包含其他控件,為後續開發預留擴充空間。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved