![]() |
|
|
![]()
|
|
| boolean34 |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 37 Регистрация: 1.11.2011 Репутация: нет Всего: нет |
привет всем!
делаю прогу и не могу определиться со способом реализации. в общем на форме будет слоями выводиться(рисоваться) различные данные(слой первичных данных, слой результатов обработки , служебная инфа и тд) . плюс нужна картографическая поддержка по типу гугл/яндекс мэпс с прокруткой и зумированием/масштабированием. как лучше будет по скорости и качеству: 1) нарисовать все в bitmap в самом высоком разрешении, и в зависимости от коэффициента масштаба все это дело сжимать спец(сглаживания?) алгоритмами; 2) координаты хранить в массиве и каждый раз рисовать в зависимости от коэффициента масштаба ; 3) ваш вариант. ??? |
|||
|
||||
| Amp |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 886 Регистрация: 17.2.2009 Репутация: нет Всего: 17 |
Зависит от того насколько масштабировать собираешься. Если битмап в максимальном масштабе укладывается в некоторые разумные размеры, не знаю, например до 4000x4000, то можно заранее все нарисовать. В общем случае - рисовать нужный регион каждый раз с учетом масштаба. Если отрисовка "тяжелая", то можно еще кэшировать что-нибудь для более гладкой прокрутки.
|
|||
|
||||
| drug007 |
|
||||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 196 Регистрация: 3.11.2011 Репутация: нет Всего: 1 |
Нечто подобное в планах
Все зависит от тяжести картинки. Сейчас я использую второй вариант - массив вершин, который выводится на экран с помощью OpenGL, масштабирование решается элементарно средствами самого OpenGL. Но у меня пока плотность информации очень маленькая - только линии и точки выводятся на экран (типа реки, береговой черты и населенных пунктов). В дальнейшем планирую выводить заполненные многоугольники (например суша и море). Тут уже думаю использовать текстуры и масштабирование решать через LODы. Но это все равно ближе ко второму варианту. В целом первый вариант проще в реализации, но потом сложнее будет масштабировать (тут я имею в виду сам алгоритм). На маленьких объемах он будет быстрее, на больших медленнее второго. Второй вариант более универсален и масштабируем, но сложнее в реализации. |
||||
|
|||||
| boolean34 |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 37 Регистрация: 1.11.2011 Репутация: нет Всего: нет |
понял. кто подскажет алгоритмы сглаживания для 1-го варианта?
|
|||
|
||||
| Amp |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 886 Регистрация: 17.2.2009 Репутация: нет Всего: 17 |
Билинейная фильтрация, например. В билдере не пишу, но думаю, что там должны быть классы для трансформации картинок. Можешь вывести как текстуру с помощью того же OpenGL - он сам отфильтрует. Правда дополнительно придется сгенерировать несколько mip-map уровней, что отразится на потреблении памяти.
Это сообщение отредактировал(а) Amp - 17.5.2012, 12:41 |
|||
|
||||
| boolean34 |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 37 Регистрация: 1.11.2011 Репутация: нет Всего: нет |
ок, всем спасибо большое!
|
|||
|
||||
| Doga |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 115 Регистрация: 20.12.2007 Где: Россия, Обнинск Репутация: нет Всего: нет |
Привет.
Вообще, у класса TImage достаточно неплохие алгоритмы масштабирования. Но если Вам надо что то выдающееся - посмотрите в сторону библиотеки ImageEn. Вот уж, где слаживание, так сглаживание! |
|||
|
||||
![]()
|
| Правила форума "С++ Builder" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Rrader. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C++ Builder | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |