優秀架構的考驗:窗口/全螢幕自適應切換是否只需局部微調。本節實現兩種切換模式,驗證前 22 節搭建平台的擴展性。
記錄四個尺寸變量:
ScreenWidth = SystemParameters.PrimaryScreenWidth;
ScreenHeight = SystemParameters.PrimaryScreenHeight;
WindowWidth = 800;
WindowHeight = ScreenHeight * WindowWidth / ScreenWidth; // 依螢幕比例計算,支援寬屏
切換邏輯極簡:
if (mode == "全螢幕")
{
this.WindowStyle = WindowStyle.None;
this.WindowState = WindowState.Maximized;
btn.Content = "窗口";
}
else
{
this.WindowStyle = WindowStyle.SingleBorderWindow;
this.WindowState = WindowState.Normal;
btn.Content = "全螢幕";
}
WPF 僅修改 WindowStyle 與 WindowState 即可,無需調用 Windows API 變更系統解析度。
所有遊戲物件 (角色、地圖、障礙物) 依比例放大/縮小,需將 GridSize 拆分為 GridSizeX/Y 適應寬屏非正方單元格。此模式對架構擴展性要求更高,下節將展示二十幾行代碼完美實現。