Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Разбираемся с перерисовкой. [D7]


RUNaum ©   (2006-05-18 13:55:00) 

Ситуация следующая.

Есть панель, которая перемещается мышью (спасибо за помощь Мастерам в ветке http://www.delphimaster.ru/cgi-bin/forum.pl?id=1147543175&n=0). Если на панели нету контента, то все отлично, никаких морганий, движение плавное.

Как только на панели появляется контент - при движении периодически становится видно панель, лежащую под контентом (она серого цвета и сразу заметны серые "вспышки"). Как можно избавиться от этого эффекта?

з.ы. контент third-party разработчика, информация в нем динамически изменяется.


RUNaum   (2006-05-19 22:31:00) [1]

ОГРОМНОЕ СПАСИБО!!! Все как надо )


Loginov Dmitry   (2006-05-19 20:59:00) [2]

Попробуйте поиграться со свойством FullRepaint панели.


REA   (2006-05-19 11:10:00) [3]

Такое может наблюдаться, если на форме под панелью лежат компоненты не имеющие оконных Handle-ов, которые долго перерисовываются (например картинки). На момент перетаскивания желательно как то оптимизировать их отрисовку или вообще скрыть. (При этом Panel1.DoubleBuffered только усугубляет ситуацию.)


RUNaum   (2006-05-18 17:29:00) [4]

Да, использую последнюю твою версию =) Немного исправленную, но все же. Там Ofs.X:=-1 не в том месте стоял, а так вариант отличный просто.


REA   (2006-05-18 17:28:00) [5]

А учел, что я писал про SetWindowPos?


RUNaum   (2006-05-18 17:03:00) [6]

даже не знаю что сказать =(

TNRPanel = class(TPanel)
protected
procedure WMEraseBkgnd(var Msg: TWMEraseBkgnd); message WM_ERASEBKGND;
end;


procedure TNRPanel.WMEraseBkgnd(var Msg: TWMEraseBkgnd);
begin
Msg.Result:=1;
end;


то же самое. динамически изменяющийся контент такое ощущение что спорит с панелью... вспышки при перемещении остались ( буду ломать голову дальше. может у кого есть еще идеи?


RUNaum   (2006-05-18 16:54:00) [7]

ок, спасибо, щас попробую


Джо   (2006-05-18 16:51:00) [8]

Ну да, конечно, вернуть 1.


RUNaum   (2006-05-18 16:50:00) [9]

Именно ничего или что-то вернуть в Message.Result? Я справку почитал, не допонял как лучше ) либо заглушкой, либо 1 вернуть...


Джо   (2006-05-18 16:47:00) [10]

Напиши своего наследника панели. Перекрывай в нем WM_ERASEBKGND и ничего в нем не делай. Вроде в таком духе.


RUNaum   (2006-05-18 16:44:00) [11]

Да. Первым делом его включил (


Kolan   (2006-05-18 15:34:00) [12]

DoubleBufferd := True?


Наверх

Титульная страница Поиск, карта сайта Написать письмо