地圖地表層與遮罩層屬性高度相似,為避免重複代碼,統一建立 QXMap 用戶控件雙重擔任:地表層座標固定 (0,0),遮罩層座標對應地表內位置。
#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 Map = new Image(); Image Mask = new Image();
// 新:
QXMap MapSurface = new QXMap();
QXMap Mask = new QXMap();
else if (Carrier.Children[i] is QXMap map)
{
Canvas.SetLeft(map, 0);
Canvas.SetTop(map, 0);
}
面對未來 Monster、NPC 等新物件,避免 if-else 鏈條膨脹。下節將引入 QXObject 介面,配合 for 迴圈 (避免 foreach 修改集合拋出異常) 實現統一遍歷與更新。