我正在尝试通过逐行读取文本文件来制作地图(因为我无法找到如何逐字执行该操作)。所以我制作了一个看起来像“33000000111”的map00.txt(每个数字都是一行,前两行是列数和行数,所以我加载它的矩阵看起来像 000 000 111 )。现在我应该在底部绘制 3 个图块(1 = 绘制图块)。我通过在矩阵 * 窗口高度(宽度)/矩阵行数(列)中的位置绘制瓷砖来做到这一点。 问题:我无法获得当前窗口宽度和高度的正确参数。
加载瓷砖的代码:
public int[,] LoadMatrix(string path)
{
StreamReader sr = new StreamReader(path);
int[,] a = new int[int.Parse(sr.ReadLine().ToString()),
int.Parse(sr.ReadLine().ToString())];
for(int i = 0; i < a.GetLength(0); i++)
for (int j = 0; j < a.GetLength(1); j++)
{ a[i, j] =int.Parse(sr.ReadLine().ToString()); }
sr.Close();
return a;
}
绘制瓷砖的代码:
public void DrawTiles(SpriteBatch sp, GraphicsDeviceManager gdm)
{
for(int i = 0; i < matrix.GetLength(0); i++)
for(int j = 0; j < matrix.GetLength(1); j++)
{
if (i == 1)
{
sp.Draw(tile,
new Rectangle(j * (gdm.PreferredBackBufferWidth / 3),//matrix.GetLength(1),
i * (gdm.PreferredBackBufferWidth / 3),//matrix.GetLength(0),
gdm.PreferredBackBufferWidth / matrix.GetLength(1),
gdm.PreferredBackBufferHeight / matrix.GetLength(0)),
Color.White);
}
}
}
但结果是它们被绘制在屏幕底部上方约 40 像素处!
我尝试使用 GraphicsAdapter.DefaultAdapter.CurrentDisplayMode.Height(Width) 但我得到了相同的结果。当我输入应该(理论上)宽度/列和高度/行的计算数字时,我得到了我想要的。所以任何建议都会非常受欢迎,因为我在谷歌和 Stack Overflow 上停留了很长时间。