(调整大小和LoadContent()
)
我希望通过让我的标题屏幕在一个类中来分离纹理,并在需要时调用它。这有助于整洁,但我只是在跨类移动精灵,Texture2D
是不一样的。
我有一张1024X768的图片,我正在调用Title Screen.cs
中的图片,希望能够在LoadContent()
中使用Title Screen.cs
加载任何内容而不必转到Game1.cs加载图像并返回Title Screen.cs
。使用Title Screen.cs中的加载内容将使我的代码更易于阅读和理解。它也需要适合屏幕而不是,我想知道我可以使用什么功能来调整它的大小。
(我现在有一个功能来调整图像大小,但它只是一个手动修复。我必须输入正确的屏幕宽度,是否有一种简单的方法来检查屏幕的高度和宽度?)
编辑:我现在已经修改了要更新到新版本的代码。
我正常启动主类Game1.cs:
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 Title_Test
{
public class Game1 : Microsoft.Xna.Framework.Game
{
GraphicsDeviceManager graphics;
SpriteBatch spriteBatch;
public Game1()
{
Title_Screen.Content = Content;
graphics = new GraphicsDeviceManager(this);
Content.RootDirectory = "Content";
}
protected override void Initialize()
{
base.Initialize();
}
protected override void LoadContent()
{
// Create a new SpriteBatch, which can be used to draw textures.
spriteBatch = new SpriteBatch(GraphicsDevice);
Title_Screen.Load();
}
protected override void UnloadContent()
{
}
protected override void Update(GameTime gameTime)
{
// Allows the game to exit
if (GamePad.GetState(PlayerIndex.One).Buttons.Back == ButtonState.Pressed)
this.Exit();
base.Update(gameTime);
}
protected override void Draw(GameTime gameTime)
{
GraphicsDevice.Clear(Color.CornflowerBlue);
Title_Screen.Draw(spriteBatch);
base.Draw(gameTime);
}
}
}
Title Screen.cs:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
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 Title_Test
{
class Title_Screen
{
public static ContentManager Content;
public static Texture2D titleScreenPH;//Texture to be transferred.
Vector2 TitleScreen = new Vector2(0, 0);
public static int myWidth = 800;
public static int myHeight = 480;
public static void Load()
{
titleScreenPH = Content.Load<Texture2D>(@"Images\TitleScreenPH");
}
static public void Draw(SpriteBatch spriteBatch)
{
spriteBatch.Begin();
spriteBatch.Draw(titleScreenPH, new Rectangle(0, 0, myWidth, myHeight), Color.White);
spriteBatch.End();
}
}
}
答案 0 :(得分:0)
如果您需要更改精灵的绘图大小,请查看SpriteBatch
类的Draw()
方法的重载:
spriteBatch.Draw(titleScreenPH, new Rectangle(0, 0, myWidth, myHeight), Color.White);
修改强>
我有一张图像1024X768,正在调用标题中的图像 Screen.cs并希望能够在Title Screen.cs中使用LoadContent() 加载任何东西而不必去Game1.cs来加载图像 并回到Title Screen.cs。使用标题中的加载内容 Screen.cs将使我的代码更易于阅读和理解。
在这种情况下我不会使用静态成员,虽然你可以这样避免它:
class Title_Screen{
//...
public static ContentManager Content;
Texture2D titleScreenPH;
//...
public static void Load(){
titleScreenPH = Content.Load<Texture2D>(@"Images\TitleScreenPH");
}
}
然后:
public class Game1 : Microsoft.Xna.Framework.Game{
//...
public Game1(){
//...
Title_Screen.Content = Content;
}
protected override void LoadContent(){
//...
Title_Screen.Load();
}
}
编辑2:
我现在有一个功能来调整图像大小,但它只是一本手册 固定。我必须输入正确的屏幕宽度,有一个简单的 检查屏幕高度和宽度的方法?
是的,您可以从GraphicsDevice.PresentationParameters
属性中获取屏幕尺寸:
int screenWidth = graphicsDevice.PresentationParameters.BackBufferWidth;
int screenHeight = graphicsDevice.PresentationParameters.BackBufferHeight;