C# 单声道游戏中的全屏分辨率问题
几天前,我开始使用Visual Studio 2017在MonoGame中开发游戏,并将我用WinForms编写的代码移植到MonoGame。现在我有一个全屏模式的问题。我在网上搜索了一下,唯一发现的是,这取决于显示器的分辨率 在应用程序的默认窗口模式下,屏幕如下所示: 现在,当我切换到全屏模式时,会发生以下情况: 现在我的问题是:C# 单声道游戏中的全屏分辨率问题,c#,visual-studio,fullscreen,resolution,monogame,C#,Visual Studio,Fullscreen,Resolution,Monogame,几天前,我开始使用Visual Studio 2017在MonoGame中开发游戏,并将我用WinForms编写的代码移植到MonoGame。现在我有一个全屏模式的问题。我在网上搜索了一下,唯一发现的是,这取决于显示器的分辨率 在应用程序的默认窗口模式下,屏幕如下所示: 现在,当我切换到全屏模式时,会发生以下情况: 现在我的问题是: 人们在图片上看不到它,因为我使用了打印按钮并粘贴到了画图中,但图像在很大程度上是分散的 屏幕的右侧部分被切断 精灵将移动到顶部 我正在使用 graphics.T
graphics.ToggleFullScreen()代码>
有没有办法保持窗口模式下的原始状态?也许在4:3模式下放置柔性杆并保持精灵位置?我的位置是固定的。所以使用类似
spriteBatch.Draw(Params.CUR\u SPRITE\u P1,新矩形(Convert.ToInt32(POSITION\u P1.X),Convert.ToInt32(POSITION\u P1.Y),750476),Color.White)代码>用于播放器位置和屏幕(实现滚动)
或者在全屏模式下调整一切,但保持精灵在不同屏幕分辨率上的位置
多谢各位 好的,搜索了又搜索,我终于找到了答案:
var scaleX = (float)ActualWidth / VirtualWidth;
var scaleY = (float)ActualHeight / VirtualHeight;
var matrix = Matrix.CreateScale(scaleX, scaleY, 1.0f);
spriteBatch.Begin(transformMatrix: matrix);
这必须放在Draw()方法中。
我的虚拟屏幕大小是800x480。我用1920x1080大小的显示器测试了一下,效果很好