Цитата(MadDog__ @ 11.9.2012, 14:12 ) | | Я так понимаю надо стереть весь фон и перерисовать все заново. только как стереть? |
Да, только не стереть-перерисовать, а скопировать кусок этого-самого буфера. Т.е. рисовать в буфер надо не в момент OnPaint\OnErase, а только когда что-то меняется. Например, когда часть окна временно перекрыли, содержимое буфера ведь никак не меняется, так зачем его перерисовывать, когда достаточно скопировать. Но при этом буфер надо, естественно, постоянно хранить.
Насчет замедленной перерисовки, рисовать в другом потоке на экран - нельзя. Но в буфер можно, конечно. Это стоит делать, если перерисовка буфера занимает заметное время и подтормаживает. А для имитации замедленного вывода не стоит замедлять саму перерисовку, можно делать вывод по кускам на экран: первый раз 1 десятую высоты (например), второй - 2, и т.д. И не через Sleep, конечно, а по таймеру, например. Т.е. как только буфер перерисовывается, ставим таймер, выводим нужную часть буфера и запоминаем эту часть. На каждом таймере делаем себе Invalidate, пока все не выведется, а на каждом Paint копируем все большую и большую часть экрана. Как только выведем все, таймер отключаем.
|