
Новые сообщения [новые:0]
Дайджест
Горячие темы
Избранное [новые:0]
Форумы
Пользователи
Статистика
Статистика нагрузки
Мод. лог
Поиск
|
|
07.11.2017, 21:03:33
|
|||
|---|---|---|---|
|
|||
Отображение матрицы цветов на Canvas |
|||
|
#18+
Добрый вечер! Суть вопроса: есть двумерный массив double значений, размерностью примерно [500,1000]. Каждый элемент массива интерпретируется в цветовое значение, т.е. получается массив [500,1000] типа TColor. Далее необходимо вывести его на Canvas. Первое что приходить в голову: в цикле Canvas.Pixels[i,j] := ... Очень медленно. Что-то не могу сообразить, как это быстро и правильно сделать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
07.11.2017, 21:06:05
|
|||
|---|---|---|---|
Отображение матрицы цветов на Canvas |
|||
|
#18+
Работай через Bmp.ScanLine ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
07.11.2017, 21:31:15
|
|||
|---|---|---|---|
Отображение матрицы цветов на Canvas |
|||
|
#18+
SetDIBitsToDevice можно заюзать ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
07.11.2017, 21:35:51
|
|||
|---|---|---|---|
|
|||
Отображение матрицы цветов на Canvas |
|||
|
#18+
rgreat, +1 kaktus1983, только имей в виду, что в битмапе не RGB, а BGR. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
07.11.2017, 21:44:15
|
|||
|---|---|---|---|
Отображение матрицы цветов на Canvas |
|||
|
#18+
В битмапе вообще то есть PixelFormat. И он разный бывает. И лучше его самому явно выставить, дабы не было сюрпризов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
08.11.2017, 14:02:51
|
|||
|---|---|---|---|
|
|||
Отображение матрицы цветов на Canvas |
|||
|
#18+
Спасибо! Bmp.ScanLine ускорило в несколько раз процесс вывода SetDIBitsToDevice и BitBlt поюзаю по свободе для сравнения ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
08.11.2017, 14:10:04
|
|||
|---|---|---|---|
Отображение матрицы цветов на Canvas |
|||
|
#18+
kaktus1983Спасибо! Bmp.ScanLine ускорило в несколько раз процесс вывода Можно еще ускорить в несколько раз, просто используя обычную арифметику указателей (Bmp.ScanLine из-за оверхеда очень медленно работает в цикле). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
08.11.2017, 14:12:57
|
|||
|---|---|---|---|
|
|||
Отображение матрицы цветов на Canvas |
|||
|
#18+
Квейд, пока достаточно, если будет необходимость, то учту этот момент ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
08.11.2017, 15:38:53
|
|||
|---|---|---|---|
|
|||
Отображение матрицы цветов на Canvas |
|||
|
#18+
КвейдМожно еще ускорить в несколько раз, просто используя обычную арифметику указателей (Bmp.ScanLine из-за оверхеда очень медленно работает в цикле). Арифметика там не совсем обычная, и особого ускорения не замечал. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
08.11.2017, 15:40:10
|
|||
|---|---|---|---|
Отображение матрицы цветов на Canvas |
|||
|
#18+
Вполне достаточно вызвать Bmp.ScanLine[0]. 1 раз. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
08.11.2017, 15:56:16
|
|||
|---|---|---|---|
|
|||
Отображение матрицы цветов на Canvas |
|||
|
#18+
тогда уже BMP.Scanline[height-1] ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
08.11.2017, 15:58:56
|
|||
|---|---|---|---|
Отображение матрицы цветов на Canvas |
|||
|
#18+
Соколинский Бористогда уже BMP.Scanline[height-1] Зачем? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
08.11.2017, 16:00:02
|
|||
|---|---|---|---|
Отображение матрицы цветов на Canvas |
|||
|
#18+
Уточню. Зачем тебе указатель на образно "середину" памяти битмапки? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
08.11.2017, 16:00:47
|
|||
|---|---|---|---|
|
|||
Отображение матрицы цветов на Canvas |
|||
|
#18+
rgreat, В "битмапке" строки хранятся в памяти снизу вверх. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
08.11.2017, 16:10:07
|
|||
|---|---|---|---|
Отображение матрицы цветов на Canvas |
|||
|
#18+
Соколинский Борисrgreat, В "битмапке" строки хранятся в памяти снизу вверх. Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
08.11.2017, 16:15:46
|
|||
|---|---|---|---|
|
|||
Отображение матрицы цветов на Canvas |
|||
|
#18+
rgreat, и что это должно доказывать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
08.11.2017, 17:50:54
|
|||
|---|---|---|---|
Отображение матрицы цветов на Canvas |
|||
|
#18+
Соколинский Борис, Вот что я имел в виду: Код: pascal 1. 2. 3. 4. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
08.11.2017, 17:56:31
|
|||
|---|---|---|---|
|
|||
Отображение матрицы цветов на Canvas |
|||
|
#18+
rgreat, так можно, но смысла большого не вижу. Трудно себе представить ситуацию, когда время вычисления адреса строки будет больше чем работа со строкой. Кстати, в этом коде ошибка, будет правильно работать только со строкой, кратной 4 пикселям. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
08.11.2017, 18:12:04
|
|||
|---|---|---|---|
Отображение матрицы цветов на Canvas |
|||
|
#18+
Соколинский Борисв этом коде ошибка, будет правильно работать только со строкой, кратной 4 пикселям. Почему? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
08.11.2017, 18:16:28
|
|||
|---|---|---|---|
|
|||
Отображение матрицы цветов на Canvas |
|||
|
#18+
rgreat, проверь. Потому что в "битмапке" длина строки в байтах должна быть кратна 4. Если не кратна, дополняется байтами. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
08.11.2017, 18:17:38
|
|||
|---|---|---|---|
Отображение матрицы цветов на Canvas |
|||
|
#18+
Соколинский БорисКвейдМожно еще ускорить в несколько раз, просто используя обычную арифметику указателей (Bmp.ScanLine из-за оверхеда очень медленно работает в цикле). Арифметика там не совсем обычная, и особого ускорения не замечал.Я накладывал эффект darkness на битмап в цикле, вроде такого Код: pascal 1. 2. 3. 4. 5. в конечном итоге пришел к тому, что так выполняется быстрее в несколько раз Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. По-приколу поискал бутылочное горлышко, оказалось что тормоза вот здесь Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
08.11.2017, 18:18:19
|
|||
|---|---|---|---|
Отображение матрицы цветов на Canvas |
|||
|
#18+
Соколинский БорисВ "битмапке" строки хранятся в памяти снизу вверх.в 100% случаев? уверен? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
08.11.2017, 18:21:08
|
|||
|---|---|---|---|
|
|||
Отображение матрицы цветов на Canvas |
|||
|
#18+
Квейд, забавно. Код этот, конечно, видел, но на выделенную строку не обращал внимания. Какому идиоту, интересно, это понадобилось? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
08.11.2017, 18:22:14
|
|||
|---|---|---|---|
|
|||
Отображение матрицы цветов на Canvas |
|||
|
#18+
КвейдСоколинский БорисВ "битмапке" строки хранятся в памяти снизу вверх.в 100% случаев? уверен? В 99% С отрицательной высотой DirectShow-устройства выдают иногда. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|

start [/forum/topic.php?fid=58&mobile=1&tid=2041619]: |
0ms |
get settings: |
4ms |
get forum list: |
8ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
176ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
43ms |
get tp. blocked users: |
1ms |
| others: | 203ms |
| total: | 449ms |

| 0 / 0 |
