MonoGame Android开启全屏后屏幕左右侧出现边框的原因是什么
故障原因及修复方案
- 系统DPI缩放适配异常
Windows系统默认开启的125%/150%显示缩放不会被MonoGame默认识别,导致计算出的渲染宽度小于物理屏幕实际宽度,高度刚好匹配时就仅出现左右侧边。
解决方法:在游戏入口Main方法最开头添加系统DPI适配声明:
[System.Runtime.InteropServices.DllImport("user32.dll")] static extern bool SetProcessDPIAware(); static void Main(string[] args) { SetProcessDPIAware(); using var game = new MyGame(); game.Run(); }
- 后台缓冲尺寸未匹配物理屏幕分辨率
仅设置全屏状态不会自动同步后台缓冲尺寸到当前显示器的实际分辨率,缓冲宽度小于屏幕宽度时就会出现左右填充的默认CornflowerBlue背景色边框。
解决方法:设置全屏前手动将后台缓冲尺寸同步为当前显示器的物理分辨率:
var graphicsManager = new GraphicsDeviceManager(this); // 获取当前主显示器的实际分辨率 var displayMode = GraphicsAdapter.DefaultAdapter.CurrentDisplayMode; graphicsManager.PreferredBackBufferWidth = displayMode.Width; graphicsManager.PreferredBackBufferHeight = displayMode.Height; graphicsManager.IsFullScreen = true; graphicsManager.ApplyChanges();
- 固定渲染比例与屏幕比例不匹配
如果项目中固定了渲染视口的宽高比,当显示器比例和设置的比例不一致时,就会自动在边缘填充默认背景色,上下比例匹配时仅会出现左右侧边。
解决方法:关闭硬编码的比例锁定,或者开启软全屏模式自动适配屏幕比例:
graphicsManager.HardwareModeSwitch = false; graphicsManager.ApplyChanges();
内容的提问来源于stack exchange,提问作者Jason
相关产品推荐
相关产品推荐

