| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C++ Builder > мерцание на экране при рисовании *.BMP файла |
| Автор: Protocol 12.1.2006, 20:35 |
| Здравствуйте, вопрос состит в следующем: Надо рисовать ВМР файл, выводя его на экране [B]построчно, исключив мерцание на экране[/B] Если рисовать через Image->Canvas появляется мерцание (сразу хочу сказать, что мерцание именно программное с монитором и с железом все впорядке, проверено на нескольких, вт.ч. и новом... Если рисовать с помощью функции SetDibitsToDevice() все также рисует, но почему-то обновляется изображение при выходе из процедуры, т.е. не рисуется построчно, а рисуется (появляется) сразу изображение (нет эффекта рисования построчно)... спаибо.... |
| Автор: DemoCode 12.1.2006, 20:41 |
| компоненту TImage свойство DoubleBuffered в true. |
| Автор: Protocol 19.1.2006, 21:24 |
| Спасибо, все заработало! |
| Автор: Reewz 28.1.2006, 03:59 |
| а у Image разве есть такое свойство? |
| Автор: DemoCode 28.1.2006, 14:54 |
| Есть, только его в Object Inspectore нет. |
| Автор: Reewz 29.1.2006, 07:12 |
| странно. Я у себя в 6-ом перерыл все от и до, но такого свойства у компонента TImage не обнаружил. А при непосредственном вводе свойства при компиляции Билдер выдает ошибку отсутствия данного свойства у компонента... |
| Автор: Reewz 30.1.2006, 19:41 |
| Все, разобрался в действительности с TImage и свойством DoubleBuffered. Спасибо. |
| Автор: GLOOM 30.1.2006, 22:19 |
| подскажи |
| Автор: Reewz 31.1.2006, 00:58 | ||||
| не знаю как там на самом деле, но если рисование происходит построчно в цикле события onTimer то перед включением таймера присваиваешь DoubleBuffered=true; т.е. пример :
а при выходе :
Единственное что это приводит к лишнему расходу памяти. Но вроде не особо заметно, если не сильно загружена. Правда одно но все таки есть этого метода. Т.е. в момент когда какая - либо часть канвы перерисовывается кардинально, а вторая часть жестко связанная с первой почти не меняется, то могут возникать наложения картин или что-то вроде. |
| Автор: prohozhy 26.3.2006, 15:59 |
| Так по всему выходит, что DoubleBuffered это свойство формы, а не TImage? |
| Автор: SerK 8.8.2008, 09:05 |
| Свойство DoubleBuffered помогает, но откройте Диспетчер задач и посмотрите, какая происходит утечка памяти при каждой прорисовке. У меня доходило до переполнения буфера системы и нехватки памяти. Поэтому нужно прорисовывать сначала в TBitmap, а потом выводить на Canvas. |