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

start [/forum/topic.php?fid=58&msg=39549703&tid=2041619]: |
0ms |
get settings: |
9ms |
get forum list: |
16ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
170ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
63ms |
get tp. blocked users: |
1ms |
| others: | 205ms |
| total: | 481ms |

| 0 / 0 |
