powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / Визуализация большого количества точек
12 сообщений из 12, страница 1 из 1
Визуализация большого количества точек
    #39596486
Polaris2000
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Нужна помощь мирового сообщества!
Стоит задача визуализировать большое количество точек средствами RAD Studio C++ builder. Допустим это граф. Вопрос не во взаимном расположении точек, а в используемых методах/компонентах для отрисовки. Главное: каждая точка должна быть не просто пятном, а изображением и обладать интерактивностью (при нажатии всплывает описание/есть возможность перемещать).
Первое, что пришло мне на ум: динамическое создание TImage. Отвечает всем заявленным требованиям (разве что быстродействие не самое лучшее, хотя и терпимо), НО... При создании нескольких тысяч объектов (~10 тыс.) вылетает ошибка "canvas does not allow drawing". Кластеризация не подходит, т.к. даже при мелком масштабе должны быть видны все объекты и отвечать условию интерактивности. Больше идей пока нет! А у Вас?! В интернете куча визуализаций больших графов на веб движках. Да и без веб в той же картографии выводят кучу геометок на карту. Как же это сделать на C++ в builder?
...
Рейтинг: 0 / 0
Визуализация большого количества точек
    #39596491
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
TPaintBox я бы лично использовал.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Визуализация большого количества точек
    #39596492
Polaris2000
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dimitry Sibiryakov, а дальше? Не накладывать объекты, а рисовать их? Мне уже предложили использовать Canvas->CopyRect, а потом запоминать и отслеживать координаты объектов, но возник вопрос: что будет если несколько объектов попали в одни координаты, а потом я начал сдвигать верхний? Правильно ли я понял, что нижний мы уже закрасили и, следовательно, при каждом смещении придется перерисовать все объекты?
...
Рейтинг: 0 / 0
Визуализация большого количества точек
    #39596501
Фотография CEMb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Polaris2000Не накладывать объекты, а рисовать их?Именно так.
Если это долгий проект с перспективами, советую разделить программу на части:
- слой данный. Завести класс, который отвечает за "точку", координаты, состояния и прочее
- слой отображения, который имеет доступ к массиву "точек" и рисует их.

Если пытаться сэкономить на коде, используя TImage для каждой точки, то это приведёт к чрезмерному использованию ресурсов, тормозам и прочему, что уже наблюдается. Кроме того, отсутствие привязки данных к системе отображения позволяет легко переходить на другую отрисовку данных.

Но даже если это проект "сдать и забыть", я бы посоветовал сделать всё аккуратно. Во-первых, потому что вышеописанное делается довольно быстро. Во-вторых, на финальных моментах отладки и сдачи проекта тормоза и внезапные баги, типа "canvas does not allow drawing", не будут мешать. Блочная архитектура легче в исправлениях и модификации, а так ты заточился на TIMage, а оно не взлетело, и тебе придётся разбирать весь код обратно и прикручивать к чему-то другому... Так что лучше день потерять, потом за пять минут долететь

Polaris2000что будет если несколько объектов попали в одни координаты, а потом я начал сдвигать верхний?Ну он сдвинется, остальные останутся на месте. В чём там проблема?
...
Рейтинг: 0 / 0
Визуализация большого количества точек
    #39596528
kealon(Ruslan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Polaris2000,

классика же, ещё лет 15 назад была

и "RAD Studio C++ builder" тут совершенно не при чём

гуглим: двойная буферизация, отсечение невидимых объектов
...
Рейтинг: 0 / 0
Визуализация большого количества точек
    #39596710
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Polaris2000Правильно ли я понял, что нижний мы уже закрасили и, следовательно, при каждом смещении
придется перерисовать все объекты?

Ну, это зависит от того насколько кривые у тебя руки. Обычно для большого числа объектов,
отрисовка которых в OnPaint занимает значительное время, делают так:
1) Создают битмап на котором рисуют видимые объекты (можно в фоновом потоке);
2) Этот битмар рисуют на канве в OnPaint.

Соответственно при "каждом перемещении" можешь делать так: отрисовать на битмапе все
объекты кроме перемещаемого, а в OnPaint рисовать этот битмап и перемещаемый объект
поверх. После перемещения возвращаешься к обычной схеме. И таки да, заново отрисовывать
все объекты при этом не обязательно: достаточно "битмап-1" + перемещённый объект
отрисовать на новом битмапе.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Визуализация большого количества точек
    #39596804
exp98
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Polaris2000НО... При создании нескольких тысяч объектов (~10 тыс.) вылетает ошибка "canvas does not allow drawing Почти наверняка это ограничение в винде на общее кол-во, э-э-э, забыл, GDI , GDC (~графический контекст) ?.. Оно как раз 10 тыс.
У них всегда ограничения в 10 тыс, и на postmessage ...
...
Рейтинг: 0 / 0
Визуализация большого количества точек
    #39596816
exp98
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Polaris2000 В интернете куча визуализаций больших графов на веб движках. Да и без веб в той же картографии выводят кучу геометок на карту. Так там нарабатывалось десятилетиями, а Вы хотите впрыгнуть в поезд на Си++ и с нуля. Готовьтесь к длительности в пару лет. Надо хоть бы библиотеки сторонние поискать, хотя совместимо с билдером ... сомнительно.

И я думаю, именно "Кластеризация" и масштабирование нужны, иначе как вам их будут кликать если их больше чем точек на экране? выбирать поиском из списка?
Ну и всё что выше советовали ...
ИМХО.
...
Рейтинг: 0 / 0
Визуализация большого количества точек
    #39596823
Фотография LocksmithPC
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Polaris2000, Не знаю насколько применимо к твоей задаче, но у себя сделал такую фигню (интерактивную) с помощью 2-х битмапов и GDI+. При наведении курсором на любой район выделяется группа районов к которой он принадлежит одним цветом и сам район другим. Специально уменьшил размер окна до нечитаемого вида, интерактивность сохранилась
...
Рейтинг: 0 / 0
Визуализация большого количества точек
    #39596832
д0kХ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Это не С++
Это чистый матан.
Раздел комбинаторная оптимизация
...
Рейтинг: 0 / 0
Визуализация большого количества точек
    #39597034
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Polaris2000,

Там нет никакой сложности.
Просто надо всё сделать правильно, аккуратно, и руками.
В том числе, интерактивность.
...
Рейтинг: 0 / 0
Визуализация большого количества точек
    #39597144
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Polaris2000Нужна помощь мирового сообщества!
Стоит задача визуализировать большое количество точек средствами RAD Studio C++ builder. Допустим это граф. Вопрос не во взаимном расположении точек, а в используемых методах/компонентах для отрисовки. Главное: каждая точка должна быть не просто пятном, а изображением и обладать интерактивностью (при нажатии всплывает описание/есть возможность перемещать).
Первое, что пришло мне на ум: динамическое создание TImage. Отвечает всем заявленным требованиям (разве что быстродействие не самое лучшее, хотя и терпимо), НО... При создании нескольких тысяч объектов (~10 тыс.) вылетает ошибка "canvas does not allow drawing". Кластеризация не подходит, т.к. даже при мелком масштабе должны быть видны все объекты и отвечать условию интерактивности. Больше идей пока нет! А у Вас?! В интернете куча визуализаций больших графов на веб движках. Да и без веб в той же картографии выводят кучу геометок на карту. Как же это сделать на C++ в builder?
Данный вопрос можно просто категоризировать. Тебе нужен ГИС-движок? Так и надо спрашивать.
Просто в форум часто заходят студенты которые часто делают лабы смысл которых - демонстрация
алгоритма. Для них можно советовать RTree/Quad-Tree и всякие алгоритмы раскраски, триангуляции
и прочие.

Вобщем тебе что? Самому разобраться или готовый продукт?
...
Рейтинг: 0 / 0
12 сообщений из 12, страница 1 из 1
Форумы / C++ [игнор отключен] [закрыт для гостей] / Визуализация большого количества точек
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]