以不规则网格格式显示数组项

时间:2011-02-07 22:20:06

标签: c# .net xna

我有一系列固定大小的图像,我希望以下列格式在网格中显示,其中包含七个项目的行相对于其上方的行居中。

12345678
1234567
12345678
1234567

我不确定如何迭代数组来实现这一目标。任何帮助表示赞赏。

4 个答案:

答案 0 :(得分:2)

您无法在控制台中完成此操作,因为文本的呈现没有任何样式信息。如果没有前面的空间,看起来就像你写的那样。如果在文本前放置一个空格,它将看起来正确对齐。控制台中没有半空间这样的东西。

如果你要用更丰富的东西(如html)渲染它,这将是可以实现的。

答案 1 :(得分:0)

不要使用网格;数据未以表格形式显示。如果您正在使用ASP.NET,请使用服务器端转发器,每行包裹Panel,并在适当的位置设置面板HorizontalAlign="Center"

答案 2 :(得分:0)

我不熟悉XNA所以我不知道你是否有幸可以在屏幕周围放置控制窗口,或者必须手动执行所有绘图。无论如何,居中逻辑是相同的,可以调整:

由于文本必须通过左上角的坐标放置在包含框中(无论是屏幕,封闭的面板或窗口,还是c。),您需要执行以下计算:

textLeft = (containerWidth - textWidth) / 2

要想象这一点,最好扩展它:

textLeft = containerWidth / 2 - textWidth / 2

因此,从容器的左侧开始( x 为零),您将在容器中间移动一半,然后向后移动文本宽度的一半,从而将文本宽度的一半放置中线的一侧。

答案 3 :(得分:0)

这是我最终使用El Ronnoco的想法

for (int i = 0; i <= 7; i++)
            {
                for (int j = 0; j <= 7; j++)
                {
                    grid[i, j].posX = i * 50;
                    grid[i, j].posY = j * 50;                      

                    if (i % 2 > 0)
                    {
                        grid[i, j].posY += 25;

                        if (j == 7)
                        {
                            //remove grid[i, j] from array/sight
                        }
                }
            }

感谢您的所有答案和帮助。