Текущий архив: 2009.11.29;
Скачать: CL | DM;
Вниз
Двойная буферизация Найти похожие ветки
← →
VladOfMonster (2009-10-01 09:31) [0]Как сделать двойную буферизацю элементов управления???
В Delphi 5,6,7,8 и т.д. есть свойство для элементов управления - DoubleBuffered, но если анимацию я захочу сделать, то это свойство не спасет.
Как сделать двойную буферизацию??? В Microsoft Power Point она присутствует, если её не было - все мерцало бы до ужаса!
← →
tesseract © (2009-10-01 10:10) [1]
> Как сделать двойную буферизацию???
Кто тебе сказал, что там двойная буферезация? Чтобы не мерцало конечно надо сделать буфер вывода. Я сам paint переписывал, чтобы изменения самой картинки изменялся только при изменении размеров, помогало.
← →
VladOfMonster (2009-10-01 10:15) [2]Ну и какой код двойной буферизации, tesseract?
← →
test © (2009-10-01 10:18) [3]VladOfMonster (01.10.09 10:15) [2]
CopyRect и две канвы, во всяком случае меня так было и никакого мерцания, аналог Арканоида на TCanvas ))
← →
VladOfMonster (2009-10-01 11:04) [4]а с TCanvas, чё копировать???
← →
DVM © (2009-10-01 11:10) [5]
> VladOfMonster
Чтобы избавиться от мерцания, надо понимать причину ее возникновения. А причина мерцпния всегда одна и та же. Перерисовка контрола производится в 2 этапа:
1) Стирание фона. При этом контролу приходит сообщение WM_ERASEBKGND.
Контрол в ответ рисует свой фон.
2) Рисование переднего плана. Контролу приходит WM_PAINT контрол рисует передний план.
Между 1) и 2) проходит какое то время, иногда (если особенно 2 затягивается из за сложного рисования) в результате мы успеваем заметить фон контрола.
Отсюда вывод:
Чтоб не мерцало надо либо не стирать фон вообще (в ряде случаев годится), либо рисовать сначала в буфере, а уж потом перерисовывать картинку (т.е. стирать фон и рисовать передний план).
← →
DVM © (2009-10-01 11:13) [6]
> VladOfMonster
> Как сделать двойную буферизацю элементов управления???
А сделать очень просто, можно посмотреть реализацию DoubleBuffered в D7 и выше, а лучше в D2007 и выше там она усовершенствована.
← →
VladOfMonster (2009-10-01 11:16) [7]А как сделать реализацию двойного буфера на Microsoft Visual C++ в MFC???
← →
DVM © (2009-10-01 11:18) [8]
> VladOfMonster (01.10.09 11:16) [7]
Да точно так же. А если нужен конкретный код, то спросить на форуме по MSVC
← →
VladOfMonster (2009-10-01 11:18) [9]> DVM
а ты не знаешь ссылку на форум???
← →
DVM © (2009-10-01 11:20) [10]
> а ты не знаешь ссылку на форум???
в правый верхний угол этой страницы погляди, сразу за этой конференцией.
← →
VladOfMonster (2009-10-01 11:21) [11]> DVM
thank you!(спасибо)
Страницы: 1 вся ветка
Текущий архив: 2009.11.29;
Скачать: CL | DM;
Память: 0.49 MB
Время: 0.019 c