2011-02-07 101 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爲零),您將在容器中間移動一半,然後移回文本寬度的一半,從而將中間線任一側的文本寬度減半。