zoukankan      html  css  js  c++  java
  • (转)界面闪烁解决办法

    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中做进一步操作,再贴到显示区。

     

  • 相关阅读:
    代码重构~方法归子
    代码重构~代码注释
    VS2010安装帮助文档
    imagecreate()与imagecreatetruecolor()区别
    php cookie 和session详解
    horner's rule霍纳法则及综合除法
    php单引号和双引号的区别与用法
    php通过session判断用户是否登录
    php 产生验证码
    基于递归的整数幂的计算
  • 原文地址:https://www.cnblogs.com/huking/p/1699168.html
Copyright © 2011-2022 走看看