dsfsfs 发表于 2015-5-11 07:24:19

Windows Phone 7 学习心得(二)

  在上篇博文里面 我学习了如何创建第一个WP7手机程序和silverlight的一些知识。今天这篇博文将提到怎么样创建一个XNA的应用程序,并输出Hello, Windows Phone 7!
  --------内容开始---------
  一个XNA的应用程序
  创建一个XNA的程序与创建手机程序基本相同,选择Visual C#和XNA Game Studio 4.0,然后修改路径和程序名称。创建成功后你会发现VS为我们创建了两个项目。一个是XNA的项目一个是这个项目的内容。XNA程序通常包含的很多内容,主要是位图和三维模型,以及字体。下面我们将为XNA程序添加一个新的字体。首先右击这个项目的内容,这里我的为WindowsPhoneGame1Content,然后选择ADD(添加)-->new item 然后选择sprite font。然后点击ADD。完成之后你将会看到一个XML文件。你可以编辑它。
  首先第一个标签。你可以替换成下列字体:
  Kootenay Lindsey Miramonte PescaderoMiramonte Bold   Pescadero BoldPericles   Segoe UI MonoPericles LightSegoe UI Mono Bold
  其中Pericles 字体一般只试用于header。
  标签内表示Unicode字符的十六进制编码。默认设置从0x32到0x126包括所有的ASCII字符集的非控制字符。
  在XNA项目中,我们可以发现两个.cs文件。比如我的是Program.cs 和 Game1.cs. Program.cs 和 Windows Phone 7 games没有关系。
  大多数时间,我们都将修改 Game1.cs。
  首先class Game1继承 Microsoft.Xna.Framework 命名空间下的Game类。具体类的成员 查看http://msdn.microsoft.com/zh-cn/library/microsoft.xna.framework.game_members.aspx
  当类初始化后,会调用LoadContent()方法设置字体等其他内容。然后我们通过下面的代码来加载我们设置的字体,以及他的位置。
  



newFont = this.Content.Load("SpriteFont1");
Vector2 textSize = newFont.MeasureString(text);//作为向量返回字符串的长和宽

textPosition = new Vector2((viewport.Width - textSize.X) / 2,
                (viewport.Height - textSize.Y) /2);


  之后在把它画出来.我们在Draw方法中添加如下的代码就可以了:
  



spriteBatch.Begin();
spriteBatch.DrawString(newFont, text, textPosition, Color.White);
spriteBatch.End();

  它的完整代码如下:



namespace WindowsPhoneGame1
{
    public class Game1 : Microsoft.Xna.Framework.Game
    {
      GraphicsDeviceManager graphics;
      SpriteBatch spriteBatch;
      string text = "Hello, Windows Phone 7!";
      SpriteFont newFont;
      Vector2 textPosition;
      public Game1()
      {
            graphics = new GraphicsDeviceManager(this);
            Content.RootDirectory = "Content";
            // Frame rate is 30 fps by default for Windows Phone.
            TargetElapsedTime = TimeSpan.FromTicks(333333);
      }

      protected override void Initialize()
      {
            // TODO: Add your initialization logic here

            base.Initialize();
      }

      protected override void LoadContent()
      {
            // Create a new SpriteBatch, which can be used to draw textures.
            spriteBatch = new SpriteBatch(GraphicsDevice);
            newFont = this.Content.Load("SpriteFont1");
            Vector2 textSize = newFont.MeasureString(text);
            Viewport viewport = this.GraphicsDevice.Viewport; //获取屏幕大小
            textPosition = new Vector2((viewport.Width - textSize.X) / 2,
                                       (viewport.Height - textSize.Y) /2);
            // TODO: use this.Content to load your game content here
      }
      protected override void UnloadContent()
      {
            // TODO: Unload any non ContentManager content here
      }
      protected override void Update(GameTime gameTime)
      {
            // Allows the game to exit
            if (GamePad.GetState(PlayerIndex.One).Buttons.Back == ButtonState.Pressed)
                this.Exit();
            // TODO: Add your update logic here

            base.Update(gameTime);
      }

      protected override void Draw(GameTime gameTime)
      {
            GraphicsDevice.Clear(Color.CornflowerBlue);
            spriteBatch.Begin();
            spriteBatch.DrawString(newFont, text, textPosition, Color.White);
            spriteBatch.End();
            // TODO: Add your drawing code here

            base.Draw(gameTime);
      }
    }
}

  这样我们运行我们的程序,和WP7的操作步骤一样。是不是看到了Hello, Windows Phone 7!的输出。
  (二)完。
页: [1]
查看完整版本: Windows Phone 7 学习心得(二)