Новые сообщения [новые:0]
Дайджест
Горячие темы
Избранное [новые:0]
Форумы
Пользователи
Статистика
Статистика нагрузки
Мод. лог
Поиск
|
20.08.2018, 12:28
|
|||
---|---|---|---|
Вывод большого массива пикселей на форму |
|||
#18+
Задача. Есть массив точек примерно 1000х1000, для простоты можно считать что это байты (градиенты серого). Для простоты можно считать что это разновидность карты высот (карта, где высота каждой точки может быть от 0 до 255) (не то же самое что карта смещений). В начале все равны нулю. Каждую секунду в процессор (обработчик данных в программе) приходит от 10 до 100 новых записей. Каждая запись изменяет вплоть до нескольких тысяч точек (как правило, это добавление или удаление "слоя земли" в форме треугольника размерами около 500х50 точек). Процессор (обработчик данных в программе) успевает принять и обработать данные, сформировав этот байтовый массив. Вопрос в том, как вывести этот массив графически на форму в виде картинки 1000х1000 пикселей. Однократно вывести вопросов не возникает. Вопрос в том, чтобы картинка обновлялась хотя бы раз в секунду и притом обновлялась целиком. Сейчас рисую через Graphics2D и drawLine в событии paintComponent от JPanel, обновляю после каждых 20 новых записей через repaint() от JPanel. Но обновление происходит частично, начиная с верха панели и может нарисовать 10% или 80% картинке (как раньше в тетрисе сверху открывали картинки обнаженных дев). И так до следующего обновления, которое также может быть не полным. Подскажите куда копать... =//= ... |
|||
:
Нравится:
Не нравится:
|
|||
|
20.08.2018, 13:53
|
|||
---|---|---|---|
Вывод большого массива пикселей на форму |
|||
#18+
Aklin, JavaFX все есть. Может перейти? А в вашем примере непонятно почему частично? У вас вся картинка как матрица должна быть готова. И выводить всю хоть 30 раз в сек. ... |
|||
:
Нравится:
Не нравится:
|
|||
|
20.08.2018, 14:16
|
|||
---|---|---|---|
Вывод большого массива пикселей на форму |
|||
#18+
Petro123У вас вся картинка как матрица должна быть готова.По идее то да. Я пока не нашел какой-то функции или вроде того, которая бы принимала матрицу и выводила бы ее без дополнительных манипуляций. Так то можно хранить не в виде байт а в виде Color к примеру. А пока вожу по одному пикселю через drawLine, перебирая элементы в цикле. Была идея вместо матрицы хранить BufferedImage, и карту высот хранить сразу там, но пока не доделал... ... |
|||
:
Нравится:
Не нравится:
|
|||
|
20.08.2018, 14:32
|
|||
---|---|---|---|
Вывод большого массива пикселей на форму |
|||
#18+
Aklin, Так и надо по пикселю выводить. Оптимизация вам пока не нужна. Массив двухмерный 0...254 и будет ваша модель. ... |
|||
:
Нравится:
Не нравится:
|
|||
|
20.08.2018, 15:05
|
|||
---|---|---|---|
|
|||
Вывод большого массива пикселей на форму |
|||
#18+
по пикселю - гарантированные тормоза. Тут жаловаться бесмысленно Нужно подготавливать bitmap и выводить. В общем, ничего особого сложного быть не должно IMHO & AFAIK ... |
|||
:
Нравится:
Не нравится:
|
|||
|
20.08.2018, 15:09
|
|||
---|---|---|---|
Вывод большого массива пикселей на форму |
|||
#18+
Leonid Kudryavtsev, Ну, смотря что считать тормозом. 0,3 сек тормоз? ... |
|||
:
Нравится:
Не нравится:
|
|||
|
20.08.2018, 15:25
|
|||
---|---|---|---|
|
|||
Вывод большого массива пикселей на форму |
|||
#18+
Зачем делать криво, когда можно сильно не напрягаясь сделать нормально Если устанавливать цвет пикселей, то никто не сможет гарантировать, что не будет каких либо артифактов (например масштабирование, работа по сети X-Windows / X-Server). Работая с картинкой целиком, мы от этого застрахованы. ... |
|||
:
Нравится:
Не нравится:
|
|||
|
20.08.2018, 15:47
|
|||
---|---|---|---|
Вывод большого массива пикселей на форму |
|||
#18+
Leonid Kudryavtsev, У него вопрос в обновлении частично. Что само по себе странно. А мы поведем большим кругом через архитектуру которая устарела. Если правильно, то вообще JavaFX. Там сцена и раскадровка есть. ... |
|||
:
Нравится:
Не нравится:
|
|||
|
20.08.2018, 16:28
|
|||
---|---|---|---|
|
|||
Вывод большого массива пикселей на форму |
|||
#18+
мне вообще вопрос топик-стартера не очень понятен. Т.к. туториалов по Java2D как "вывести картинку".... полно. Или нужен пример конкретного кода от ТС (что уже есть, желательно запускаемого) или получается какой-то RTFM на google. Т.к. преобразовать массив байтов в массив растра - в общем-то 3-7 строк кода (две for, две {, одно присваивание + сборка цвета, два } итого 7 строк) ... |
|||
:
Нравится:
Не нравится:
|
|||
|
20.08.2018, 17:28
|
|||
---|---|---|---|
Вывод большого массива пикселей на форму |
|||
#18+
Leonid Kudryavtsev, Да) ... |
|||
:
Нравится:
Не нравится:
|
|||
|
20.08.2018, 18:29
|
|||
---|---|---|---|
Вывод большого массива пикселей на форму |
|||
#18+
Кажется он что то хочет оптимизировать. Заблаговременно.. ... |
|||
:
Нравится:
Не нравится:
|
|||
|
20.08.2018, 18:32
|
|||
---|---|---|---|
Вывод большого массива пикселей на форму |
|||
#18+
mayton, При этом запутывая следы фразой Paint() наполовину окна. ... |
|||
:
Нравится:
Не нравится:
|
|||
|
21.08.2018, 13:38
|
|||
---|---|---|---|
Вывод большого массива пикселей на форму |
|||
#18+
Текущий проект. Что интересно: на windows проблем с перерисовкой нет. На mac тупит. Сейчас пользуюсь только статическими данными (генератор данных сгорел), поэтому не могу проверить толком на реальном источнике... ... |
|||
:
Нравится:
Не нравится:
|
|||
|
21.08.2018, 23:26
|
|||
---|---|---|---|
Вывод большого массива пикселей на форму |
|||
#18+
Code-style ужасен. ... |
|||
:
Нравится:
Не нравится:
|
|||
|
21.08.2018, 23:46
|
|||
---|---|---|---|
Вывод большого массива пикселей на форму |
|||
#18+
Машинально отметил: ReentrantLock::unlock - в finally. Аббревиатуры BT, IRA надо переименовать. Map - пересекается со стандартным интерфейсом. Надо переименовать. SerialPort - заглушить чтоб было удобно запускать без всяких портов для тестирования. Повторяющиеся расчеты - заменить на temporary variable. Код: java 1. 2. 3. 4.
Добавить больше static import. В части анонимных классов можно свернуть синтаксис если поднятся до Java 1.8. Висячие if заменить на Egypt-style bracers. Чисто технически приложение работает. Каких-то особых тормозов при отрисовке не заметил. (Linux). ... |
|||
:
Нравится:
Не нравится:
|
|||
|
|
start [/forum/topic.php?fid=59&mobile=1&tid=2121834]: |
0ms |
get settings: |
9ms |
get forum list: |
11ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
64ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
49ms |
get tp. blocked users: |
2ms |
others: | 320ms |
total: | 472ms |
0 / 0 |