• (转)界面闪烁解决办法


    1.止刷新时闪烁的终极解决办法

    { 防止刷新时闪烁的终极解决办法(对付双缓冲无效时) }
      Perform($000B
    00); //锁屏幕  防止闪烁

      
    //
     做一些会发生严重闪烁的事情..

      
    //
    解锁屏幕并重画
      Perform($000B10);
      RedrawWindow(Handle, 
    nil0, RDW_FRAME + RDW_INVALIDATE + RDW_ALLCHILDREN + RDW_NOINTERNALPAINT);

    2   Self.DoubleBuffered := True;
    ---------------------------------------------------------------

    Self.DoubleBuffered := True;/ScrollBox.DoubleBuffered := True;
    //Self or parent is Image's parent;
    ---------------------------------------------------------------

    哈,我也遇到过类似问题。最后解决了:
    1.确定你的Canvas控件的父控件,即如果你的Canvas控件是Image1,它在Panel1上,他的
    父控件为Panel1,如果在Scrollbox1上,他的父控件为Scrollbox1;
    2.设置 父控件.doublebuffered:=true;

    Delphi中函数调用较比方便。

    OldBmp, BufBmp是TbitMap

    //画图法子:

    procedure TChart.Draw(aCanvas: TCanvas);

    begin

    {把要画的操作放在这里}

    end;

    在你要画的地域用如次代码把内存中画好的意思放到你要显得的组件的canvas上,这里就是canvas:

    Draw (BufBmp.Canvas);//Draw方法就是上面那段代码

    bitblt(self.Canvas.Handle, 0, 0, ClientWidth, ClientHeight,

    self.BufBmp.Canvas.Handle, 0, 0, SRCCOPY);//拷贝函数

     

     

     


     

    如果要用多个缓冲,用BufBmp.Assign(OldBmp);做内存中图片情节复制,然后在bufbmp中做进一步操作,再贴到显示区。

     

  • 相关阅读:
    Redhat MysqlReport安装配置详解
    asp.net中服务器端控件和客户端控件的交互问题
    关于弹出对话框返回值的分析
    关于父子窗口的参数传递(引用的高手的)
    呵呵!刚刚申请!
    Loadrunner教程
    性能测试常见用语
    如何删除电脑垃圾文件
    内连接和外连接
    酒桌上的规矩
  • 原文地址:https://www.cnblogs.com/huking/p/1699168.html
Copyright © 2020-2023  润新知