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

WPF/Silverlight 遊戲開發教程 (二十一-4):統一地圖控件 QXMap 實現地表與遮罩層整合

     編輯:關於C語言

地圖地表層與遮罩層屬性高度相似,為避免重複代碼,統一建立 QXMap 用戶控件雙重擔任:地表層座標固定 (0,0),遮罩層座標對應地表內位置。

QXMap 核心屬性

#region 地圖/遮罩屬性
public int CenterX { get; set; }   // 關鍵點 X (地表為 0)
public int CenterY { get; set; }   // 關鍵點 Y (地表為 0)
public double X { get; set; }      // 地圖 X 座標
public double Y { get; set; }      // 地圖 Y 座標
public double Width_ { get; set; } // 寬度
public double Height_ { get; set; }// 高度
public ImageSource Source { get; set; } // 圖片來源
public double Opacity_ { get; set; }    // 透明度
#endregion

替換原有 Image 物件

// 原:Image Map = new Image(); Image Mask = new Image();
// 新:
QXMap MapSurface = new QXMap();
QXMap Mask = new QXMap();

AllMove() 中統一處理邏輯

else if (Carrier.Children[i] is QXMap map)
{
    Canvas.SetLeft(map, 0);
    Canvas.SetTop(map, 0);
}

預留擴展性:介面統一管理

面對未來 Monster、NPC 等新物件,避免 if-else 鏈條膨脹。下節將引入 QXObject 介面,配合 for 迴圈 (避免 foreach 修改集合拋出異常) 實現統一遍歷與更新。

新增 QXMap 用戶控件截圖
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved