2 bra hancock Bra_Hancock 于 2016.02.09 15:59 提问

如何读取xna文件中的图片?

某游戏(东方幕华祭)中的好多文件都是xna格式的
在存放图片的文件夹里边用看图软件无法打开
因为xna好像用的人很少 也没搜到什么有效的办法 截图有遮挡 改后缀无效
那么如何打开xna里边的图?(不是16进制)

3个回答

devmiao
devmiao   Ds   Rxr 2016.02.10 07:49

XNA中2D绘图主要通过SpritePatch完成,Sprite.DrawString()用于绘制文本,Sprite.Draw()则用于绘制2D图片和材质(Texture)。

一.在XNA中绘制文本

1.在XNA windows Game项目中,为ContentPipeline添加一个文件夹Fonts,然后添加字体定义文件:Add..->New Item…->选择Sprite Font,命名为“MsYaHei.spritefont”:

ScreenShot00091

2.打开新建的spritefont(实际上是个XML文件),修改FontName节点为

1: Microsoft YaHei
“Microsoft YaHei”是系统中已安装的一种字体的名称,可以在Windows/Fonts目录中找到,此名称不是字体文件的文件名,而是显示在Fonts目录的字体名称。

3.在Game类中添加一个成员变量:

1: SpriteFont fontMsYahei;
4.在LoadContent()方法中加载字体:

1: fontMsYahei = this.Content.Load(@"Fonts\msYahei");
5.在Draw()方法中使用加载的字体绘制文本:

1: string text = "Hello,XNA!";
2: spriteBatch.Begin();
3: spriteBatch.DrawString(fontMsYahei, text, new Vector2(25f, 25f), Color.Red);
4: spriteBatch.End();
二.在XNA中绘制图片

1.在ContentPipeline中添加一个文件夹Images,然后添加图片文件:

ScreenShot00092

所添加的两个图片文件中,xna.png有白色背景色,而xna_trans.png则背景透明。

xna xna_trans

2.在Game类中添加两个成员变量用于加载图片:

1: Texture2D image;
2: Texture2D imageTrans;
3.在LoadContent()方法中加载图片:

1: image = Content.Load(@"Images\xna");
2: imageTrans = Content.Load(@"Images\xna_trans");
4.在Draw()方法中绘制加载的图片:

1: spriteBatch.Begin();
2: spriteBatch.Draw(image, new Vector2(25,70),Color.White);
3: spriteBatch.Draw(imageTrans, new Vector2(25, 250), Color.White);
4: spriteBatch.End();
三.运行结果:

ScreenShot00094

四.小技巧:

XNA Game默认不显示鼠标指针,如果要显示,可在Game类构造器中设置属性:

1: IsMouseVisible = true;
如果要想Resize程序窗口,可设置属性:

1: Window.AllowUserResizing = true;

91program
91program   Ds   Rxr 2016.02.09 17:13

Xna内容管道及Xnb格式解析 网上有相关的资源,你可以使用搜索引擎查找获取相关的文章。

91program
91program   Ds   Rxr 2016.02.09 16:44

XNA 用的还是比较多的,特别是 微软 的游戏。其中是多个图片按一定格式处理了,所以不可能在看图软件中直接显示。
解决的方法:自己写编译解析文件,可能需要加入解压缩逻辑。

91program
91program 回复Bra_Hancock: 现成的软件是没有的,试着自己了解 XNA 文件的格式吧。
接近 2 年之前 回复
Bra_Hancock
Bra_Hancock 没接触过xna不了解对应的压缩算法……有没有能读取它的软件
接近 2 年之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!