程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> 關於C語言 >> C#開發WPF/Silverlight動畫及游戲系列教程(Game Course):(二十六)(4)

C#開發WPF/Silverlight動畫及游戲系列教程(Game Course):(二十六)(4)

編輯:關於C語言

下面我們創建一個名為QXRoleFace的通用型面板控件,創建方法具體見第十四節。有了前面那麼多章節關於控件的講解,我們可以很輕松的將頭像、PK圖標、以及其他基本參數值鑲嵌進QXRoleFace控件中(如下圖):

添加完後,剩下的是本節的一個難點:如何根據面板中值條(生命值、魔法值、活力值)槽尺寸創建相應的方塊值條進行填充?我們首先分析,這3條值應該用什麼控件來實現?大家結合本文的第一張圖不難看出,它們均為漸變的圓角矩形(為了簡單起見,我對其左右兩邊進行了對稱處理而非三角形,至於如何實現不規則矩形,大家可以參考圖片蒙版,後面的章節我也會講到);在WPF/Silverlight中,創建漸變必須用到彩虹筆刷,我根據這3值的傳統顏色,如下定義這3把彩虹筆刷:

LinearGradientBrush[] rainbowBrush = new LinearGradIEntBrush[3];

/// <summary>

/// 初始化彩虹筆刷

/// </summary>

private void InitializeRainbowBrush() {

//血值筆刷

CreateRainbowBrush(ref rainbowBrush[0], 201, 238, 206, 60, 224, 70, 106, 234, 130);

//魔值筆刷

CreateRainbowBrush(ref rainbowBrush[1], 192, 195, 238, 86, 104, 226, 100, 104, 233);

//活值筆刷

CreateRainbowBrush(ref rainbowBrush[2], 254, 209, 172, 255, 142, 40, 255, 177, 74);

}

/// <summary>

/// 創建彩虹筆刷

/// </summary>

private void CreateRainbowBrush(ref LinearGradIEntBrush brush ,

byte r0, byte g0, byte b0, byte r1,byte g1,byte b1, byte r2, byte g2, byte b2) {

 brush = new LinearGradIEntBrush();

 brush.StartPoint = new Point(0, 0);

 brush.EndPoint = new Point(0, 1);

 brush.GradientStops.Add(new GradIEntStop(Color.FromRgb(r0, g0, b0), 0));

 brush.GradientStops.Add(new GradIEntStop(Color.FromRgb(r1, g1, b1), 0.70));

 brush.GradientStops.Add(new GradIEntStop(Color.FromRgb(r2, g2, b2), 1));

 brush.Freeze();

}

然後通過RadiusX及RadiusY設置矩形值條的圓角邊,並添加對應的數字。最後將這3條矩形相應的嵌入到主角頭像面板中,這樣就完成了主角頭像面板的創建:

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved