解决自定义控件窗体缩放时闪烁

简单实现一个可视控件

TMyControl = class(TCustomControl)
end;

    会发现连续改变尺寸(缩放窗口)时,创建在TMyControl这个控件的子控件出现闪烁问题。其实是被大量重绘导致问题。解决问题的方法,当然是减少重绘。

有2中情况会出现重绘(除自己要求重绘)

  1. 父窗体重绘,要求子窗体重绘
  2. 窗体被遮挡区域改变时

Windows提供这确定是否需要重绘的参数:

    WS_CLIPCHILDREN    --- 父窗体重绘子窗体不处理

    WS_CLIPSIBLINGS     --- 同级窗体遮挡不处理

具体可以看相关帮助!

procedure TMyControl.CreateParams(var Params: TCreateParams);
begin
  inherited CreateParams(Params);
  with Params do
    Style := Style or WS_CLIPCHILDREN or WS_CLIPSIBLINGS;
end;

开发环境:

  •   DelphiXE3
  •   Win7
原文地址:https://www.cnblogs.com/gleam/p/3758992.html