c# - 使用 XNA 在游戏窗口中显示矩形

标签 c# grid xna rectangles

我想将我的游戏网格划分为一个矩形数组。每个矩形是 40x40,每列有 14 个矩形,总共 25 列。这涵盖了 560x1000 的游戏区域。

这是我设置的用于在游戏网格上制作第一列矩形的代码:

Rectangle[] gameTiles = new Rectangle[15];

for (int i = 0; i <= 15; i++)
{
    gameTiles[i] = new Rectangle(0, i * 40, 40, 40);
}

我很确定这行得通,但当然我无法确认它,因为矩形不会呈现在屏幕上以供我实际看到它们。为了调试目的,我想做的是渲染一个边框,或者用颜色填充矩形,这样我就可以在游戏本身上看到它,只是为了确保它能正常工作。

有什么办法可以做到这一点吗?或者我可以通过任何相对简单的方法来确保它有效?

非常感谢。

最佳答案

首先,为矩形制作一个 1x1 像素的白色纹理:

var t = new Texture2D(GraphicsDevice, 1, 1);
t.SetData(new[] { Color.White });

现在,您需要渲染矩形 - 假设矩形名为 rectangle。要渲染填充 block ,非常简单 - 确保将色调 Color 设置为您想要的颜色。只需使用此代码:

spriteBatch.Draw(t, rectangle, Color.Black);

对于边框,是不是比较复杂。你必须绘制构成轮廓的 4 条线(这里的矩形是 r):

int bw = 2; // Border width

spriteBatch.Draw(t, new Rectangle(r.Left, r.Top, bw, r.Height), Color.Black); // Left
spriteBatch.Draw(t, new Rectangle(r.Right, r.Top, bw, r.Height), Color.Black); // Right
spriteBatch.Draw(t, new Rectangle(r.Left, r.Top, r.Width , bw), Color.Black); // Top
spriteBatch.Draw(t, new Rectangle(r.Left, r.Bottom, r.Width, bw), Color.Black); // Bottom

希望对您有所帮助!

关于c# - 使用 XNA 在游戏窗口中显示矩形,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2795741/

相关文章:

XNA 如何绘制简单的图形?

c# - 使用 Monogame/XNA 将 Sprite 绘制到永久的 Texture2d

c# - 通过堆栈的异步/等待行为

c# - 如何将 autocad 文件转换为清晰 View 的 pdf 文件?

c# - 安装后出现不需要的 MSI

Java GridBagLayout 内含组件

wpf - 网格单元内堆栈面板上的边框

WPF 绑定(bind)到 Grid.ColumnSpan

c# - XNA XML 序列化问题

c# - IEnumerable 集合中元素的序号位置 (Linq to XMl )