无法在MonoGame中绘制图像
本文关键字:绘制 图像 MonoGame | 更新日期: 2023-09-27 18:32:58
>我在Photoshop中构建了一个动画图像,其中包含12帧/图像。所以我试图使这个绘制函数遍历文件中的前 4 张图像。图片的宽度以像素 1340 为单位。所以实际上第一行的每个 340 像素都有一个新帧。有 3 行。整个图像分辨率为1330x1998。所以如果我写
new Rectangle(_animationFrame * 0, 0, 3100, 3900)
所以现在它显示了所有图片中的第一张图片。因此,如果我递增一个动画框架它不会转到下一张图片。啊,我在这里失败了什么?
编辑:
我让它像这样工作
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显示为厘米,而不是像素,当我单击打开的选项时。谢谢大家的帮助。我将第一个答案标记为正确,因为现在在这种情况下,它是正确的答案。谢谢
也许你想做的是:
new Rectangle(_animationFrame * 340, ...)
因为正如您所写的"每个 340 像素中都有一个新帧"。
正如评论所说,你现在正在做的是将一个数字乘以 0,这是没有用的。
编辑
我的理解是,你想画你的精灵表的前 4 张图像,每张图像的宽度为 340。它们的高度我想是 1998/3,因为你的精灵表中有 3 行。
所以,这是你的代码(_animationFrame
从 0 开始(:
new Rectangle(_animationFrame * 340, 0, 430, 1998 / 3);
_animationFrame++;
if (_animationFrame == 4)
_animationFrame = 0;