| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Delphi: Звук, графика и видео > Закраска TImage |
| Автор: hug 7.8.2007, 08:47 | ||
| Есть картотека с фотографиями (BLOB)-поле Если есть фотка то гружу ее из потока, а если нет принято решение закрашивать место под фото белым. Вот код закраски:
Но эта закраска работает оч медленно. Даже медленнее чем грузить фото из базы? Может кто-нибуть знает как быстрее Image сделать белым? |
| Автор: former 7.8.2007, 09:04 |
Есть хороший компонент MyDBImage. Это стандартный DBImage с поддержкой jpeg и возможностью выводить надпись при отсутствии данных в поле. Вот тебе http://www.sql.ru/forum/actualthread.aspx?tid=167492. |
| Автор: Alexeis 8.8.2007, 17:19 |
| hug, функция PatBtl (см. MSDN) это делает в несколько раз быстрее. |
| Автор: somewhere 9.8.2007, 15:16 | ||
| Через TBitmap.ScanLine будет почто в 50 раз быстрее (замерял). Примерно так:
|
| Автор: s-mike 10.8.2007, 09:29 |
А где учтено время отрисовки на экране? Добавлено через 41 секунду ScanLine — это всего лишь заполнение массива данных в памяти. Отрисовка требует гораздо больше времени. |
| Автор: somewhere 10.8.2007, 10:09 |
Если вы хоть раз рисовали "напрямую" в видеопамяти, то поймете что примерно столькоже, сколько и заполнение массива. На скорость отрисовки в данном примере влияет только заполнения битмапа. В обоих случаях сама отрисовка выполняется самим компонентом TImage средствами WinAPI |
| Автор: Alexeis 10.8.2007, 11:58 |
| s-mike, имел ввиду то что громкие заявления о скорости ничего не дают, так как большая часть времени тратиться на отрисовку битмапа, а не на заполнение его значениями цвета. На самом деле TImage использует не просто API а GDI в котором отрисовка битмапа весьма медленная операция, потому стремиться изо всех сил улучшать этот показатель нет смысла. |
| Автор: s-mike 10.8.2007, 15:56 | ||
А вы рисовали? Будьте добры примерчик, как рисовать в Windows напрямую в видеопамяти. Тогда можете говорить, что эта операция также тривиальна и быстра, как и заполнение массива. |