2011-02-07 106 views
0

我有一个固定大小的图像数组,我想以下列格式在网格中显示,其中包含七个项目的行相对于它上面的一行居中。以不规则网格格式显示数组项目

12345678 
1234567 
12345678 
1234567 

我不确定我是如何遍历数组来实现这一点的。任何帮助表示赞赏。

+1

你不说你是在开发一个Windows Forms应用程序还是一个网站?或者也许别的东西?你有没有尝试过任何东西? – 2011-02-07 22:22:31

+0

另外...你的数组格式是什么?它是二维的吗?最后的“空白”项目(即缺失的第8个元素)如何表示?一行中可以出现多少个元素的上限和下限是多少? – 2011-02-07 22:24:52

回答

0

这里是我结束了,用一个想法从萨尔瓦多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 
         } 
       } 
      } 

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

2

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

如果你想将它渲染成更丰富的东西,比如html,这可能是可以实现的。

0

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

0

我对XNA并不熟悉,所以我不知道您是否拥有控制窗口,您可以在屏幕上放置或者必须手动执行所有绘图。不管怎样,对中逻辑是相同的并且可以适应:

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

textLeft = (containerWidth - textWidth)/2 

为直观起见,可能会更好,扩展它:

textLeft = containerWidth/2 - textWidth/2 

于是,开始在容器的左侧(X为零),您将在容器中间移动一半,然后移回文本宽度的一半,从而将中间线任一侧的文本宽度减半。