无法在MonoGame中获取图像

时间:2013-09-25 20:06:49

标签: c# xna sprite monogame

我在photoshop中构建了一个动画图像,里面有12帧/图像。所以我试图让这个绘图功能通过文件中的前4个图像。图片的宽度在像素1340中。因此实际上在第一行中的每340个像素中存在新帧。共有3行。整个图像分辨率为1330x1998。所以,如果我写

new Rectangle(_animationFrame * 0, 0, 3100, 3900)

所以现在它显示了所有照片中的第一张照片。所以,如果我增加一个 animationFrame它不会去下一张图片。什么我在这里失败了?

编辑:

我让它像这样工作

int[] x = { 0, -780, -1560, -2332 };


protected override void Draw(GameTime gameTime)        {
        GraphicsDevice.Clear(Color.CornflowerBlue);
        _spriteBatch.Begin();
_spriteBatch.Draw(_radarTexture, new Rectangle(x[i], 0, 3100, 3900), Color.White);
        _spriteBatch.End();
        base.Draw(gameTime);
}

更新功能会增加x数组中的值以通过帧。 当你试图测试正确的比例和x / y坐标以使其正确时,浪费时间是荒谬的。必须有更简单的方法,但不能得到它......

编辑2 好吧,我想我明白了。当我点击选项打开时,Photoshop显示为厘米,而不是像素。谢谢大家的帮助。我将第一个答案标记为正确,因为现在在这种情况下它是正确的答案。谢谢

1 个答案:

答案 0 :(得分:1)

也许你想做的是:

new Rectangle(_animationFrame * 340, ...)

因为你写的“每340个像素中有一个新的帧” 正如评论所说,你现在正在做的是将数字乘以0,这是没用的。

编辑

我的理解是你要绘制spritesheet的前4个图像,每个图像的宽度为340.他们的身高我想是1998 / 3,因为你的spritesheet中有3行 所以,这是你的代码(_animationFrame从0开始):

new Rectangle(_animationFrame * 340, 0, 430, 1998 / 3);
_animationFrame++;
if (_animationFrame == 4)
  _animationFrame = 0;