从图像动态创建 XNA 精灵

发布于 2024-10-14 04:12:07 字数 256 浏览 1 评论 0原文

我有一张由用户上传的图像,假设是 .png。 该图像具有固定尺寸,假设为 100x100。

我想用这张图片创建 4 个精灵。

一个从 (0,0) 到 (50,50)

另一个从 (50, 0) 到 (100, 50)

第三个从 (0, 50) 到 (50, 100)

最后一个从 (50, 50) 到 ( 100, 100)

我怎样才能用我喜欢的 C# 做到这一点?

预先感谢您的任何帮助

I have an image, let's says a .png, that is uploaded by the user.
This image has a fixed size, let's say 100x100.

I would like to create 4 sprites with this image.

One from (0,0) to (50,50)

Another from (50, 0) to (100, 50)

The third from (0, 50) to (50, 100)

The last from (50, 50) to (100, 100)

How can I do that with my prefered C# ?

Thanks in advance for any help

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

遥远的绿洲 2024-10-21 04:12:07

要从 PNG 文件创建纹理,请使用 Texture2D.FromStream() 方法 (MSDN)。

要绘制纹理的不同部分,请使用 sourceRectangle 参数来重载接受该参数的 SpriteBatch.Draw (MSDN)。

这是一些示例代码:

// Presumably in Update or LoadContent:
using(FileStream stream = File.OpenRead("uploaded.png"))
{
    myTexture = Texture2D.FromStream(GraphicsDevice, stream);
}

// In Draw:
spriteBatch.Begin();
spriteBatch.Draw(myTexture, new Vector2(111), new Rectangle( 0,  0, 50, 50), Color.White);
spriteBatch.Draw(myTexture, new Vector2(222), new Rectangle( 0, 50, 50, 50), Color.White);
spriteBatch.Draw(myTexture, new Vector2(333), new Rectangle(50,  0, 50, 50), Color.White);
spriteBatch.Draw(myTexture, new Vector2(444), new Rectangle(50, 50, 50, 50), Color.White);
spriteBatch.End();

To create a texture from a PNG file, use the Texture2D.FromStream() method (MSDN).

To draw the different sections of the texture, use the sourceRectangle parameter to an overload of SpriteBatch.Draw that accepts it (MSDN).

Here's some example code:

// Presumably in Update or LoadContent:
using(FileStream stream = File.OpenRead("uploaded.png"))
{
    myTexture = Texture2D.FromStream(GraphicsDevice, stream);
}

// In Draw:
spriteBatch.Begin();
spriteBatch.Draw(myTexture, new Vector2(111), new Rectangle( 0,  0, 50, 50), Color.White);
spriteBatch.Draw(myTexture, new Vector2(222), new Rectangle( 0, 50, 50, 50), Color.White);
spriteBatch.Draw(myTexture, new Vector2(333), new Rectangle(50,  0, 50, 50), Color.White);
spriteBatch.Draw(myTexture, new Vector2(444), new Rectangle(50, 50, 50, 50), Color.White);
spriteBatch.End();
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文