Visualizzazione dei risultati da 1 a 1 su 1
  1. #1
    Utente di HTML.it L'avatar di escocat
    Registrato dal
    Feb 2012
    Messaggi
    308

    [C#] [Xna] Scrittura su Windows Form in Xna Game

    Ciao, purtroppo certe volte mi perdo in un bicchiere, dimostro di non aver completamente afferrato il senso della OOP. In un WindowsGame di Xna voglio creare un Windows Form e scriverci sopra il valore di una variabile. Con il codice che segue ci riesco:

    codice:
    public static Form form1;
    public static Label label1;
    form1 = new Form();
    form1.Width = 200;
    form1.Height = 730;
    form1.FormBorderStyle = FormBorderStyle.FixedDialog;
    form1.ControlBox = false;
    form1.Font = new System.Drawing.Font("Quartz Ms", 12);
    form1.ForeColor = System.Drawing.Color.LightGreen;
    form1.BackColor = System.Drawing.Color.Black;
    form1.StartPosition = FormStartPosition.CenterScreen;
    label1 = new Label();
    label1.Left = 0;
    label1.Top = 10;
    label1.AutoSize = true;
    form1.Controls.Add(Game.label1);
    In Update() di Game1 scrivo

    codice:
    label1.Text = x.ToString();
    e OK. Ma se decido di risparmiarmi tutte quelle righe di costruziione Form e label1 e aggiungere via progetto un Form ed in progettazione creo comodamente una label1 e cerco di scriverci dentro con questo esempio di codice:

    codice:
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using Microsoft.Xna.Framework;
    using Microsoft.Xna.Framework.Audio;
    using Microsoft.Xna.Framework.Content;
    using Microsoft.Xna.Framework.GamerServices;
    using Microsoft.Xna.Framework.Graphics;
    using Microsoft.Xna.Framework.Input;
    using Microsoft.Xna.Framework.Media;
    namespace WindowsGame1
    {
         public class Game1 : Microsoft.Xna.Framework.Game
        {
            GraphicsDeviceManager graphics;
             public static int x;
            public static Form1 form1;
            public Game1()
            {
                graphics = new GraphicsDeviceManager(this);
                Content.RootDirectory = "Content";
            }
            protected override void Initialize()
            {
                form1 = new Form1();
                base.Initialize();
            }
            protected override void LoadContent()
            {
                 
            }
            protected override void UnloadContent()
            {
                
            }
     
            protected override void Update(GameTime gameTime)
            {
                x++;
                form1.label1.Text = x.ToString();
                base.Update(gameTime);
            }
    
            protected override void Draw(GameTime gameTime)
            {
                GraphicsDevice.Clear(Color.CornflowerBlue);
                base.Draw(gameTime);
            }
        }
    }
    il compilatore mi dice che non si può fare "a causa del livello di accessibilità di label1". Allora io istintivamente vado nel designer di Form1 e modifico l'accesser di label1 da private a public

    codice:
    public System.Windows.Forms.Label label1;
    Adesso non mi fa più problemi sull'accesso ma se eseguo il Game non appare nulla....

    P.S.:
    OH cavolo avevo scordato un Form1.Show() in Initialize.... scusate......
    Ultima modifica di escocat; 23-02-2015 a 20:55

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.