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


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

     

  • 相关阅读:
    VMware安装Centos7超详细过程
    Linux部署Web项目
    Entity Framework快速入门IQueryable与IEnumberable的区别
    ASP.NET MVC3中的路由系统(Routes)
    C# Lambda表达式概述
    WCF大数据量传输解决要点
    div滚动条样式设计
    ASP.NET MVC 自定义路由
    C# Lambda表达式学习笔记
    C# 操作excel
  • 原文地址:https://www.cnblogs.com/huking/p/1699168.html
Copyright © 2020-2023  润新知