zoukankan      html  css  js  c++  java
  • 控件的重绘和双缓冲技术

    处理重绘和无效操作:

    重新定制控件行为和外观

    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属性,可以直接使用双缓冲技术

  • 相关阅读:
    redis 篇
    redis 篇
    Url 简单讲解
    django 分组统计遇见的问题
    Django REST framework 自定义字段
    python 之 MRO 异常
    redis中的事务、lua脚本和管道的使用场景
    不实例化一个 class 的时候使用它的property
    转载牛人的英语学习方法,值得学习
    2017年值得学习的3个CSS特性
  • 原文地址:https://www.cnblogs.com/bincoding/p/4897126.html
Copyright © 2011-2022 走看看