我知道这个问题已经被问过很多次。 然而,我在谷歌上搜索了一个小时后,发现所有的解决方案在本质上是一样的。 大家都说,为了调整窗口大小在XNA只需添加以下代码行(或几行代码的一些微小的变化)在Game1类的初始化()方法:
//A lot of people say that the ApplyChanges() call is not necessary,
//and equally as many say that it is.
graphics.IsFullScreen = false;
graphics.PreferredBackBufferWidth = 800;
graphics.PreferredBackBufferHeight = 600;
graphics.ApplyChanges();
这并不为我工作。 该代码编译并运行,但绝对没有什么变化。 我已经冲刷了GraphicsDevice的和GraphicsDeviceManager类的文档,但我一直无法找到这表明我需要做上述以外的任何事情的任何信息。
我也相当肯定我的显卡就足够了(ATI HD 5870),虽然它看起来在XNA显卡兼容性维基条目不会被一会儿更新。
我在Windows 7上运行,与上面的显卡时,Visual C#2010 Express和XNA的最新版本。
所以我只是希望有人可以帮我找到我在哪里搞乱了。 我会后我的整个Game1类以下(我给它改名MainApp)。 如果任何人希望看到任何正在呼吁其他类的,问我会张贴。
public class MainApp : Microsoft.Xna.Framework.Game
{
GraphicsDeviceManager graphics;
SpriteBatch spriteBatch;
Player player;
public MainApp()
{
graphics = new GraphicsDeviceManager(this);
Content.RootDirectory = "Content";
}
protected override void Initialize()
{
player = new Player();
//This does not do ANYTHING
graphics.IsFullScreen = false;
graphics.PreferredBackBufferWidth = 800;
graphics.PreferredBackBufferHeight = 600;
graphics.ApplyChanges();
base.Initialize();
}
protected override void LoadContent()
{
spriteBatch = new SpriteBatch(GraphicsDevice);
Vector2 playerPosition = new Vector2(GraphicsDevice.Viewport.TitleSafeArea.X,
GraphicsDevice.Viewport.TitleSafeArea.Y
+ 2*(graphics.GraphicsDevice.Viewport.TitleSafeArea.Height / 3));
player.Initialize(Content.Load<Texture2D>("basePlayerTexture"),
playerPosition);
}
protected override void UnloadContent()
{
}
protected override void Update(GameTime gameTime)
{
if (GamePad.GetState(PlayerIndex.One).Buttons.Back == ButtonState.Pressed)
this.Exit();
base.Update(gameTime);
}
protected override void Draw(GameTime gameTime)
{
GraphicsDevice.Clear(Color.CornflowerBlue);
spriteBatch.Begin();
player.Draw(spriteBatch);
spriteBatch.End();
base.Draw(gameTime);
}
}
PS这是我第二天与C#,因此,如果这是由于一个非常愚蠢的错误,我为浪费你的时间表示歉意。