![]() |
|
Модераторы: Daevaorn |
![]()
|
|
| drug007 |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 196 Регистрация: 3.11.2011 Репутация: нет Всего: 1 |
Всем здравствуйте!
Возникла проблема взаимного расположения объектов на экране. Например объекты на экране имеют подписи, которые нужно автоматически располагать так, чтобы они не закрывали эти самые объекты. В том числе при добавлении нового объекта нужно делать перерасчет. Нет ли каких-либо библиотек, которые учитывают топологию (надеюсь правильно использовал этот термин) и позволяют выстраивать объекты в соответствии с определенными правилами? В принципе что-то должно быть такое, потому что задача распространена - например, расположение виджетов на экране тоже требует учета топологии. |
|||
|
||||
| Amp |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 886 Регистрация: 17.2.2009 Репутация: 3 Всего: 17 |
Искать надо по ключевой фразе вроде "resolving labels overlapping", но зачастую все решается индивидуально применительно к заданным условиями, что позволяет производить некоторые оптимизации. В простейшем случае это реализуется изменением выравниванем подписи относительно объекта и скрытия подписей, когда их уже никуда не воткнуть. В более сложных случаях можно укорачивать подписи, вставляя ellipsis, изменять размер шрифта, оттаскивать подписи сильно дальше от объектов, рисуя линии до них, ограничивать максимальнок количество подписей на экране и т.п.
А расположение виджетов на экране не требует ничего такого - они либо позиционируются абсолютно, либо подчинаются layout manager-у. Это сообщение отредактировал(а) Amp - 17.11.2013, 13:32 |
|||
|
||||
| akizelokro |
|
|||
![]() Крокодил ![]() ![]() Профиль Группа: Участник Сообщений: 761 Регистрация: 30.7.2007 Репутация: 1 Всего: 5 |
Пишется наскидку за неделю (за неделю, потому что автоматически возникнут другие требования).
Топология вообще-то 2-мерная, 3- или 4 мерная? -------------------- a = a + b; b = a - b; a = a - b; |
|||
|
||||
| akizelokro |
|
|||
![]() Крокодил ![]() ![]() Профиль Группа: Участник Сообщений: 761 Регистрация: 30.7.2007 Репутация: 1 Всего: 5 |
Если честно, то таких задач нет. считается по-своему, но я злой сегодня. на исключение перекрытия ставятся условия. На взаимное расположение - тоже.
-------------------- a = a + b; b = a - b; a = a - b; |
|||
|
||||
| drug007 |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 196 Регистрация: 3.11.2011 Репутация: нет Всего: 1 |
Спасибо за ответы. Действительно для виджетов досточно простого менеджера раскладки. Что касается надписей - топология 2D (точнее проекция 3D на плоскость). Нашел про labelling algorithms, буду читать.
|
|||
|
||||
| ТарасАтавин |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 370 Регистрация: 26.8.2013 Репутация: нет Всего: нет |
Не понятно, какое надписи имеют отношении к топологии. Если бы стояла задача не только расположить, но и раскрасить так, чтоб ни какие два соседних цвета не совпадали, тогда другое дело. А надпись вне самого объекта надо просто присчитать к габаритам своего объекта. Если же существуют некоторые правила взаиморасположения, то их по определению придётся учесть в алгоритме, что вообще исключает применение библиотек.
-------------------- Не так всё плохо, как оно есть на самом деле. |
|||
|
||||
![]()
|
| Правила форума "С++:Общие вопросы" | |
|
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |