Recently I had a problem with flickering when resizing a screen due to a gradient background. The problem was mainly noticeable with control on top of the background. Below are a couple of snippets that might help.
First I tried this:
// Interface
procedure WMEraseBackground(var _message:TMessage); message WM_ERASEBKGND;
// Implementation
procedure TForm.WMEraseBackground(var _message: TMessage);
begin
_message.Result := 1;
end;
This helped with the flicker on the gradient panel, but I noticed other issues with some other controls not painting correctly and a panel having a thicker border. Then I tried this:
// Interface
procedure WMEnterSizeMove(var Message:TWMMove); message WM_ENTERSIZEMOVE;
procedure WMExitSizeMove(var Message:TWMMove); message WM_EXITSIZEMOVE;
procedure TfrmMain.WMEnterSizeMove(var Message: TWMMove);
begin
// Set controls to visible = false
end;
procedure TfrmMain.WMExitSizeMove(var Message: TWMMove);
begin
// Set controls to visible = true
end;
Doing this really helped the other controls from flicking, when the user resizes the window the controls disappear and then reappear once the resize is complete.
No comments:
Post a Comment