Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 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.01 c
15-1254234150
Частный инвестор
2009-09-29 18:22
2009.11.29
Идеи для бизнеса


2-1255634244
Drowsy
2009-10-15 23:17
2009.11.29
Представление (View) и процедура выбора.


3-1230463282
tipman
2008-12-28 14:21
2009.11.29
update в MSO Access через Jet4.0 более 127 полей


8-1201199790
Степан
2008-01-24 21:36
2009.11.29
Доступ к звуку при записи


15-1254148562
xayam
2009-09-28 18:36
2009.11.29
Напомните как называется фильм