2013-04-29 63 views
1

我目前正在尝试使用XNA加载一个简单的位图,但我得到了以下错误:尝试加载一个位图,但XNA want'sa的Texture2D

Error loading "Maps\standard". File contains Microsoft.Xna.Framework.Graphics.Texture2D but trying to load as System.Drawing.Bitmap.

代码:

public Bitmap map; 

public void load(Game game, String image) { 
    path = image; //path to image 
    map = game.Content.Load<Bitmap>("Maps/"+path); 
    sizeX = map.Width; 
    sizeY = map.Height; 
} 
+0

你想用位图文件做一次加载哪些? – M4st3rM1nd 2013-04-29 19:32:21

回答

1

你想要的如下:

map = game.Content.Load<Texture2D>("Maps/"+path); 

XNA的工作方式是有一个内容管道,它需要输入(如你的位图图像)和produc es输出(Texture2D),它与输入格式不同。

XNA在显示图像时使用Texture2D对象。

+0

但我想要一个位图。 – Hobbit9797 2013-04-29 11:35:32

+0

为什么你想要一个位图?如果你想要一个位图,那么不要使用XNA来加载它。 – 2013-04-29 11:36:05

+0

@ Hobbit9797 Texture2D就像一个位图。它有一个2D数据阵列,将纹理的值存储为一个像素网格。 XNA不直接支持使用位图。 – MatthewMcGovern 2013-04-29 13:19:30

0

现在,我只是用C#标准

Bitmap bmp = (Bitmap)Bitmap.FromFile(path); 
+0

不要忘记一旦完成它就抛弃它:'bmp.Dispose()' – 2013-05-01 08:38:15