|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
25.11.2020, 15:45 | #1 |
Форумчанин
Регистрация: 30.06.2012
Сообщений: 145
|
Самый быстрый способ прорисовки на компоненте Image
Здравствуйте. Подскажите каким методом можно максимально уменьшить нагрузку на компьютер при прорисовке изображений на компоненте Image 1?
Я пробовал рисовать через Canvas.Draw - но если нужно рисовать много изображений и хорошей частотой кадров - начинаются лаги (даже если ограничить прорисовку только видимой частью изображения) Так же пробовал рисовать через bitblt, но нагрузка тоже сильно не уменьшилась. Пробовал через движок Andorra2d, но там, если я правильно понял - прорисовка идет только в само окно формы, на компонентах рисовать нельзя (по крайней мере такой информации я не нашел). Можно ли средствами DirectX, OpenGL или еще какими-то сделать прорисовку изображений максимально быстрой на одном из визуальных компонентах (Image, PaintBox и т.д.)? И есть ли существенная разница в скорости прорисовки Bmp и Jpeg с учетом разницы размера файлов одинакового разрешения? Рисую на канве через компонент Timer. Заранее спасибо за советы. |
25.11.2020, 16:47 | #2 |
Высокая репутация
СуперМодератор
Регистрация: 27.07.2008
Сообщений: 16,220
|
Через SetDIBitsToDevice. Набросал пример, на форме PaintBox1 и кнопка:
Код:
E-Mail: arigato.freelance@gmail.com
Последний раз редактировалось Arigato; 25.11.2020 в 16:51. |
25.11.2020, 18:19 | #3 | ||||
Лис
Старожил
Регистрация: 18.09.2015
Сообщений: 2,409
|
Советую вопрос задать на FreePascal.ru
У нас там была тема про отрисовки линий с бенчмаркинг. Цитата:
Какой режим отрисовки установлен у формы? С буфферизацией али без? С двойной или тройной? Изображения в системной памяти или закэшированы в видеопамяти? Цитата:
Цитата:
Цитата:
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
У дзен программиста программа делает то что он хотел, а не то что он написал . |
||||
26.11.2020, 00:41 | #4 |
Форумчанин
Регистрация: 30.06.2012
Сообщений: 145
|
Нагрузку в своем примере не измерял конкретную, но кулер начинает крутится гораздо быстрее, перетягивание окна подлагивает и некоторые действия с мышкой тоже. Интервал в таймере стоит 50. Картинки размера 256х256 bmp 24 Бита. Прорисовка картинок в несколько слоев (картинки текстур, а поверх картинки с прозрачностью) на графический буфер (динамически созданная TBitmap). Картинки загружены в массив картинок TBitmap; На форме буферизацию не выставлял.
Спасибо за советы. Верхний пример работает очень быстро. Теперь попробую его адаптировать под прорисовку не пикселей, а картинок bmp. |
26.11.2020, 00:47 | #5 |
Лис
Старожил
Регистрация: 18.09.2015
Сообщений: 2,409
|
Это вообще похоже на то что уперлись в производительность жёсткого диска.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
У дзен программиста программа делает то что он хотел, а не то что он написал . |
26.11.2020, 01:28 | #6 |
Форумчанин
Регистрация: 30.06.2012
Сообщений: 145
|
Возможно, хотя стоит SSD диск. Но он неизвестной китайской фирмы - поэтому - все может быть. Ну или же я где-то неправильно что-то сделал - это тоже не исключено.
|
Опции темы | Поиск в этой теме |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Самый быстрый способ получить размер файла | xexxex | Win Api | 12 | 17.04.2015 01:42 |
android самый быстрый способ запустить приложение | Deight | Мобильные ОС (Android, iOS, Windows Phone) | 2 | 13.10.2013 12:53 |
Самый быстрый способ задать цвет пикселю | Terrance! | Общие вопросы Delphi | 13 | 05.12.2011 12:40 |
Ищу самый быстрый способ работы с файлами | trunc | Общие вопросы Delphi | 6 | 15.10.2011 12:21 |
Самый быстрый способ проверить прокси? | TwiX | Работа с сетью в Delphi | 6 | 15.02.2010 22:41 |