![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Серое мелькание при перерисовке [D7, Win95/98, WinXP]
Сергей Петров © (2005-06-22 08:09:00)При изменении содержания tpanel или tlabel или чего-нибудь подобного, когда они перерисовываются мелькает серый цвет (компоненты сами - желтые). Как этого избежать?
-=XP=- (2005-06-22 09:27:00) [1]
TSomeClass = class
private
procedure WMEraseBkGnd(var AMsg: TWMEraseBkGnd); message WM_ERASEBKGND;
...
procedure TSomeClass.WMEraseBkGnd(var AMsg: TWMEraseBkGnd);
begin
AMsg.Result := 1; // Ненулевое возвращаемое значение является признаком того, что задний фон (background) уже стерт/прорисован, и системе не надо его стирать/прорисовывать.
end;
Использовать такое решение можно лишь в том случае, если контрол в последующем будет полностьюпрорисовывать занимаемую область. В противном случае будет "мусор".
тихий вовочка (2005-06-22 09:00:00) [2]Вопрос вдогонку: а не обработка ли WM_ERASEBKGND мерцает? Можно ли ее отключить?
Satan jr. (2005-06-22 08:20:00) [3]Попробуй сделать так:
Procedure TForm1.FormCreate(Sender: TObject);
begin
Panel1.DoubleBuffered:=true;
end;
Это снизит скорость, но устранит мерцание (flicker)