• 控件的重绘和双缓冲技术


    处理重绘和无效操作:

    重新定制控件行为和外观

    Void Invalidate();
    
    void Invalidate ( Rectangle );
    
    //使控件的特定区域无效并且向控件发送绘制的消息;
    
    void Update();
    
    //使控件重绘其工作区内的无效区域;
    
    void Refresh();
    
    //相当于 this.invalidate(true); this.Update();

     

    双缓冲技术:

    当数据量很大时,绘图可能需要几秒钟甚至更长的时间,而且有时还会出现闪烁现象,为了解决这些问题,可采用双缓冲技术来绘图。双缓冲即在内存中创建一个与屏幕绘图区域一致的对象,先将图形绘制到内存中的这个对象上,再一次性将这个对象上的图形拷贝到屏幕上,这样能大大加快绘图的速度。

    1.在内存中建立一块“虚拟画布”;

    Bitmap bmp = new Bitmap(600, 600);

     

    2.获取这块内存画布的Graphic引用;

    Graphics g = Graphics.FromImage( bmp );

     

    3.在这块内存画布上绘图;

    g.FillEllipse( brush, i * 10, j * 10, 10 , 10);
    
    g.DrawLine()  
    
    g.DrawString()
    
    //...

     

    4.将内存画布画到窗口中,释放内存缓冲区;

    this.CreateGraphics().DrawImage( bmp, 0, 0 );

     

    注:在.net Framework 3以上版本中有DoubleBuffered属性,可以直接使用双缓冲技术

  • 相关阅读:
    es6-compact-table 名词备忘
    JS 防抖和节流函数
    为什么 JS 对象内部属性遍历的顺序乱了
    JS 发送 HTTP 请求方法封装
    JS 一些位操作的妙用
    JS 格式化时间
    linux ssh连接
    c# checked 和 unchecked
    c# mvc action 跳转方式
    IIS 动态与静态压缩
  • 原文地址:https://www.cnblogs.com/bincoding/p/4897126.html
Copyright © 2020-2023  润新知