Monogame不绘制png图像
Posted
技术标签:
【中文标题】Monogame不绘制png图像【英文标题】:Monogame not drawing png images 【发布时间】:2021-12-05 04:28:49 【问题描述】:我正在尝试在单人游戏中将精灵绘制到屏幕上,但不起作用。不给出任何错误。我尝试了其他图像,它适用于它们。也许它与.png的图像有关?请帮帮我,我想不通
代码:
using Microsoft.Xna.Framework;
using Microsoft.Xna.Framework.Graphics;
using Microsoft.Xna.Framework.Input;
namespace Test
public class Game1 : Game
private GraphicsDeviceManager _graphics;
private SpriteBatch _spriteBatch;
Texture2D realisticSturgeonSprite;
public Game1()
_graphics = new GraphicsDeviceManager(this);
Content.RootDirectory = "Content";
IsMouseVisible = true;
protected override void Initialize()
// TODO: Add your initialization logic here
base.Initialize();
protected override void LoadContent()
_spriteBatch = new SpriteBatch(GraphicsDevice);
realisticSturgeonSprite = Content.Load<Texture2D>("Sturgeon");
protected override void Update(GameTime gameTime)
if (GamePad.GetState(PlayerIndex.One).Buttons.Back == ButtonState.Pressed || Keyboard.GetState().IsKeyDown(Keys.Escape))
Exit();
// TODO: Add your update logic here
base.Update(gameTime);
protected override void Draw(GameTime gameTime)
GraphicsDevice.Clear(Color.CornflowerBlue);
Texture2D rect = new Texture2D(_graphics.GraphicsDevice, 80, 30);
Color[] data = new Color[80 * 30];
for (int i = 0; i < data.Length; i++) data[i] = Color.Chocolate;
rect.SetData(data);
Vector2 coor = new Vector2(10, 20);
_spriteBatch.Begin();
_spriteBatch.Draw(rect, coor, Color.White);
_spriteBatch.Draw(realisticSturgeonSprite, new Vector2(50, 60), Color.White);
_spriteBatch.Draw(sturgeonSprite, new Vector2(80, 90), Color.White);
_spriteBatch.End();
base.Draw(gameTime);
精灵:Lake_Sturgeon.png
如果我遗漏了任何内容,我可以在帖子中添加更多详细信息。
【问题讨论】:
文件名不应该以.png
结尾吗?
@Steven,通过内容管理器加载文件的扩展名是.xnb
,必须省略。
【参考方案1】:
使用Monogame Pipline tool先将PNG文件处理成XNB文件更容易。最佳跨平台解决方案。
有时您可能需要直接加载 PNG。
将现有文件添加到 Visual Studio 中的项目。选择 PNG 文件。复制它。
在 Visual Studio 的属性下,设置“构建类型为无”和“如果较新则复制到输出”。
请注意,这只适用于桌面平台。
protected override void LoadContent()
_spriteBatch = new SpriteBatch(GraphicsDevice);
realisticSturgeonSprite = Texture2D.FromFile(GraphicsDevice,@"Lake_Sturgeon.png");
// you can add path if needed (copy to output option above doesn't need it)
protected override void Draw(GameTime gameTime)
GraphicsDevice.Clear(Color.CornflowerBlue);
_spriteBatch.Begin();
_spriteBatch.Draw(realisticSturgeonSprite, new Vector2(50, 60), Color.White);
_spriteBatch.End();
base.Draw(gameTime);
像往常一样绘制纹理。
【讨论】:
谢谢!对我来说效果很好! 我不断收到此错误“方法 'FromFile' 没有重载需要至少 3 个参数”我应该如何处理 Null 部分? @gogy,对不起,我在开发分支。离开,null
。我已经修复了帖子。以上是关于Monogame不绘制png图像的主要内容,如果未能解决你的问题,请参考以下文章
MonoGame / XNA在Spritebatch中绘制多边形