2011-02-07 3 views
0

У меня есть массив изображений фиксированного размера, которые я хочу отобразить в сетке в следующем формате, с линиями, содержащими семь элементов по центру над строкой над ним.Отображение элементов массива в нерегулярном формате сетки

12345678 
1234567 
12345678 
1234567 

Я не уверен, как я могу выполнять итерацию по массиву для достижения этого. Любая помощь приветствуется.

+1

Вы не говорите, разрабатываете ли вы приложение Windows Forms или веб-сайт? Или может быть что-то еще? Вы уже что-то пробовали? –

+0

Также ... В каком формате находится ваш массив? Это двумерное? Как представлены «пустые» элементы в конце (т. Е. Отсутствующий восьмой элемент)? Каковы верхние и нижние пределы того, сколько элементов может отображаться в одной строке? –

+0

Вы хотите, чтобы линии, содержащие семь элементов, были центрированы? Или все они сосредоточены? Это консольное приложение или графический интерфейс? Имеет ли массив только 7 и 8 символов? –

ответ

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

Текст в блоке кода должен был представлять только формат, в котором я хотел отображать элементы массива. Я фактически работаю с изображениями. Я отредактировал вопрос, чтобы сделать его более понятным. Извини за это. – David

0

Не используйте сетку; данные не отображаются в табличной форме. Если вы работаете с ASP.NET, используйте ретранслятор на стороне сервера с Panel, обернутым вокруг каждой строки, и установите, где это необходимо, .

0

Я не знаком с XNA, поэтому не знаю, благословлены ли вы с помощью окон управления, которые вы можете разместить вокруг экрана или выполнить все чертежи вручную. Независимо от того, логика центрирования одна и та же и может быть адаптирована:

Поскольку текст должен быть помещен по координате левого верхнего угла в поле ввода (будь то экран, закрывающая панель или окно, & c .) необходимо выполнить следующие расчеты:

textLeft = (containerWidth - textWidth)/2 

чтобы визуализировать это, возможно, было бы лучше, чтобы развернуть его:

textLeft = containerWidth/2 - textWidth/2 

Так, начиная с левой стороны контейнера (х нуля), вы перемещаетесь на полпути по контейнеру, затем перемещаете половину ширины текста, тем самым располагая половину ширины текста по обе стороны от центральной линии.