Как занять максимум полезной площади?
От: ayap Россия  
Дата: 06.07.07 07:27
Оценка:
Есть следующая задачка:

Дан набор прямоугольных элементов пользовательского интерфейса, у которых определены некоторые параметры, а именно:
1) рекомендуемые длина и ширина
2) рекомендуемый способ расположения (горизонтальный или вертикальный)

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

При этом можно менять реальные длину и ширину прямоугольников, но желательно учитывать их пропорцию.
Re: Как занять максимум полезной площади?
От: tinytjan  
Дата: 06.07.07 09:52
Оценка: +1
Здравствуйте, ayap, Вы писали:

A>Есть следующая задачка:


A>Дан набор прямоугольных элементов пользовательского интерфейса, у которых определены некоторые параметры, а именно:

A>1) рекомендуемые длина и ширина
A>2) рекомендуемый способ расположения (горизонтальный или вертикальный)

A>Требуется: так расположить эти прямоугольники на заданной площади (окно программы, т.е. тоже прямоугольник), чтобы,

A>учитывая рекомендуемые параметры занять максимум полезной площади.

A>При этом можно менять реальные длину и ширину прямоугольников, но желательно учитывать их пропорцию.


Мало данных.

Пример -- берем контрол с наиболее совпадающими по пропорции размерами с заданной площадью и раздуваем практически на всю площадь.
В щели пихаем оставшиеся контролы, уменьшив их до неприличных размеров, естественно, сохраняя пропорции.

Надо дополнительные ограничения. Типа ограничение размеров сверху \ снизу, штраф за ресайз, в зависимости от его величины.

Да, кстати, ИМХО лучше все-таки ограничить промежутки допустимых высоты и ширины, ибо, если вздумается ресайзить заполненную площадь, то при предложенном варианте (жесткая пропорция) пропорция площади тоже будет жестко задана.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re: Как занять максимум полезной площади?
От: Кодт Россия  
Дата: 26.07.07 08:40
Оценка: +1
Здравствуйте, ayap, Вы писали:

A>Дан набор прямоугольных элементов пользовательского интерфейса, у которых определены некоторые параметры, а именно:

A>1) рекомендуемые длина и ширина
A>2) рекомендуемый способ расположения (горизонтальный или вертикальный)

A>Требуется: так расположить эти прямоугольники на заданной площади (окно программы, т.е. тоже прямоугольник), чтобы,

A>учитывая рекомендуемые параметры занять максимум полезной площади.

Требуется оторвать руки тому, кто поставил такую задачу. Представь себе, какое адское юзабилити будет у такой программы.

А тупое решение вот такое:
1) Берём виджет, пропорции которого наиболее близки к пропорциям окна; и растягиваем до упора.
2) Если осталась полоска нулевой толщины — то всех остальных масштабируем в ноль (у нас ведь не сказано, есть ли ограничение по размерам снизу).
3) Если полоска ненулевая — повторяем с ней и с оставшимися виджетами ту же процедуру.

Можно для эксперимента выполнить первую итерацию не с самым близким виджетом, а со всеми — и выбрать наилучший результат.
... << RSDN@Home 1.2.0 alpha rev. 655>>
Перекуём баги на фичи!
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.