So ändern Sie die Fenstergröße mit XNA

Ich weiß, dass diese Frage schon oft gestellt wurde. Alle Lösungen, die ich nach über einer Stunde Googeln gefunden habe, sind jedoch im Wesentlichen gleich. Jeder sagt, um die Größe eines Fensters in XNA zu ändern, fügen Sie Ihrer Initiate () - Methode in der Game1-Klasse einfach die folgenden Codezeilen (oder eine geringfügige Variation dieser Codezeilen) hinzu:

    //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();

Das funktioniert bei mir nicht. Der Code wird kompiliert und ausgeführt, es ändert sich jedoch absolut nichts. Ich habe die Dokumentation nach den Klassen GraphicsDevice und GraphicsDeviceManager durchsucht, konnte jedoch keine Informationen finden, die darauf hinweisen, dass ich etwas anderes als das oben Genannte tun muss.

Ich bin mir auch ziemlich sicher, dass meine Grafikkarte ausreicht (ATI HD 5870), obwohl es den Anschein hat, dass der Wiki-Eintrag zur XNA-Grafikkartenkompatibilität eine Weile nicht aktualisiert wurde.

Ich arbeite unter Windows 7 mit der oben genannten Grafikkarte, Visual C # 2010 Express und der neuesten Version von XNA.

Also hoffe ich nur, dass mir jemand helfen kann, herauszufinden, wo ich es vermassle. Ich werde meine gesamte Game1-Klasse (ich habe sie in MainApp umbenannt) unten veröffentlichen. Wenn jemand eine der anderen Klassen sehen möchte, die aufgerufen werden, fragen Sie und ich werde sie posten.

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);
    }
}

P.S. Dies ist mein zweiter Tag mit C #. Wenn dies auf einen wirklich dummen Fehler zurückzuführen ist, entschuldige ich mich für die Zeitverschwendung.

Antworten auf die Frage(2)

Ihre Antwort auf die Frage