Member 11841791 Ответов: 2

Сортировать одномерный массив в наилучшем возможном двумерном размере?


Эй Codeproject,

У меня есть список изображений, которые я рендерингую, теперь длина массива может меняться время от времени, но для того, чтобы не только использовать новые растровые изображения(Width * Images.Длина, Высота) Я хотел бы отсортировать все эти изображения в наилучшем размере для прямоугольника.

У кого-нибудь есть идея, как это сделать?

В настоящее время мой код таков:

Bitmap CombinedImages = new Bitmap(MaxWidth * Images.Count, MaxHeight);       

 for (int i = 0; i < Images.Count; i++)
 {
        g.DrawImage(Images[i], MaxWidth * i, 0, Images[i].Width, Images[i].Height);
 }


Я бы предпочел иметь две петли для петель, чтобы я мог поместить их все в квадрат, а не только в одну линию.

Что я уже пробовал:

Я пробовал использовать модульную функцию:


int bestColumn = Images.Count;

while(Images.Count % 2 != 0)
{
    bestColumn += 1;
}

int Columns = BestColumn / 2;
int Rows = BestColumn / 2;


Я не знаю, что делать дальше.

Patrice T

Объясните подробно, что вы хотите сделать.
Я боюсь, что вы пытаетесь построить решение, которое является неправильным или, в лучшем случае, очень сложным для того, что действительно необходимо.

Philippe Mori

Очень трудно понять ваш вопрос...

2 Ответов

Рейтинг:
2

Member 11841791

На данный момент найдено рабочее решение.

int bestColumn = (int)Math.Ceiling(Math.Sqrt(Images.Count)) * 2;

int column = bestColumn / 2;


for (int i =0; i< column; i++)
{
    for (int j = 0; j < column; j++)
    {
        if(j * column + i >= 0 && j * column + i < Images.Count)
        {


Рейтинг:
1

OriginalGriff

Это довольно сложно! Начать здесь: Проблемы упаковки-Википедия, свободная энциклопедия[^] и перейдите по нескольким соответствующим ссылкам.


Member 11841791

Мне не нужен упаковочный раствор, Грифф. Найти решение. Хотя Спасибо за ссылку, я прочитаю ее позже.