Вниз
Скачать: CL | DM;

Разбираемся с перерисовкой.   Найти похожие ветки 

 
RUNaum ©   (2006-05-18 13:55) [0]

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

Есть панель, которая перемещается мышью (спасибо за помощь Мастерам в ветке http://delphimaster.net/view/1-1147543175/). Если на панели нету контента, то все отлично, никаких морганий, движение плавное.

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

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


 
Kolan ©   (2006-05-18 15:34) [1]

DoubleBufferd := True?


 
RUNaum ©   (2006-05-18 16:44) [2]

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


 
Джо ©   (2006-05-18 16:47) [3]

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


 
RUNaum ©   (2006-05-18 16:50) [4]

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


 
Джо ©   (2006-05-18 16:51) [5]

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


 
RUNaum ©   (2006-05-18 16:54) [6]

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


 
RUNaum ©   (2006-05-18 17:03) [7]

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

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


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


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


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

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


 
RUNaum ©   (2006-05-18 17:29) [9]

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


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

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


 
Loginov Dmitry ©   (2006-05-19 20:59) [11]

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


 
RUNaum ©   (2006-05-19 22:31) [12]

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



Страницы: 1 вся ветка

Скачать: CL | DM;



Память: 0.47 MB
Время: 0.026 c
2-1149774642
Nikolaich
2006-06-08 17:50
2006.06.25
Как программно переместить splitter?


3-1146564654
wirg
2006-05-02 14:10
2006.06.25
Помогите с кавычками


15-1147007389
Mozart
2006-05-07 17:09
2006.06.25
Слышал ли кто - нибудь о фирме nsign.ru? предложили работу...


15-1149091686
LexxX
2006-05-31 20:08
2006.06.25
Очередной вопрос по PHP


11-1129286044
dvk
2005-10-14 14:34
2006.06.25
Проблема с 32-битным BitMap ом




   Наверх