![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Обновить одновременно? [D7, WinXP]
capkoh © (2005-08-21 13:46:00)Пишу компонент - плоский ProgressBar. У него заполняется полоска и рисуется сверху процент (как у Gauge, но более точный). Возникла проблема одновременного обновления текущего прогресса и текста (процентов выполнения) сверху прогресса. Компонент рисую на Canvas. Можно ли запретить Canvas обновляться до некоторого момента, чтобы и текст и компонент обновлялись одновременно? Логично, что это требуется для того, чтобы компонент меньше "мерцал". Однако, есть еще вариант обновлять только текст (чаще) и прогресс (реже) независимо. Но тут непонятно как обновить изображение под текстом...
TStas (2005-08-23 23:29:00) [1]>Юрий Зотов
Я так рисовал циферки с тенью, это и есть общепринятый способ?
Igorek (2005-08-23 16:39:00) [2]
> прямо на Canvas, то будет хорошо заметно мерцание (при затирке
> текста полосой и его (текста) рисовании вновь).
DoubleBuffered
все уже придумано
capkoh (2005-08-23 15:54:00) [3][6] - У меня рисуется сначала полоса, потом, сверху, текст. При этом, если рисовать прямо на Canvas, то будет хорошо заметно мерцание (при затирке текста полосой и его (текста) рисовании вновь). Это становится сильно заметно при быстром изменении значения выполнения. При одновременном обновлении (рисовании с готовой заготовки) этого эффекта не возникает => мерцания меньше => лучше.
Igorek (2005-08-23 09:37:00) [4]
> чтобы и текст и компонент обновлялись одновременно?
Не вижу проблемы. Это все обновляется по наступлении события, которое посылает система. В методе Paint рисуешь все. При изменении чего-то (текста или полосы) вызываешь Invalidate. Система сама вызовет Paint.
> Юрий Зотов © (21.08.05 15:10) [1]
> Можно рисовать на временном битмапе (в памяти), а потом
> разом переносить весь битмап на канву компонента.
DoubleBuffered?
capkoh (2005-08-21 17:04:00) [5]Да, с временным bitmap стало гораздо лучше! Спасибо.
Джо (2005-08-21 16:44:00) [6]В общем случае, если битмэп не будет слишком большим (а это, похоже, как раз тот случай), то - без разницы.
Джо (2005-08-21 16:36:00) [7]
> [2] capkoh © (21.08.05 16:35)
It's up to you.
capkoh (2005-08-21 16:35:00) [8]В этом случае, лучше создавать/уничтожать bitmap внутри самой процедуры рисования, или лучше сделать ее компонентом класса и создавать/уничтожать однажды?
Юрий Зотов (2005-08-21 15:10:00) [9]Можно рисовать на временном битмапе (в памяти), а потом разом переносить весь битмап на канву компонента.