C#的双缓存技术

缓存

protected override void OnPaint(PaintEventArgs e)
  {

   System.Drawing.Bitmap b = new Bitmap(this.Width,this.Height);//双缓冲技术,先将所有要画的画在该图片中,再调用GS画出该图片.
   Graphics g = Graphics.FromImage((System.Drawing.Image)b);
   //

在这里画你所需要画的

//
   e.Graphics.DrawImage((System.Drawing.Image)b,0,0);
   g.Dispose();

base.OnPaint (e);
  
  }

 

其中要用到的一个技术就是双缓存技术,双缓冲技术是为了解决界面闪烁而采用的一项技术,就是将要绘制的界面先绘制在内存中一个虚拟的、和正在显示的界面同样大小的一个区域上,界面变化时将这个内存中的图象一次性绘制到屏幕上。Graphics gxOff;if (m_bmpOffscreen == null) //要双缓冲的位图。m_bmpOffscreen = new Bitmap(ClientSize.gxOff = Graphics.gxOff.//绘制一些位图。//从内存位图绘制。}在上面的代码中,我们通过调用 Graphics 类的静态 FromImage 方法在与我们的控件大小相同的空位图中创建了一个 Graphics 对象。

======================================

通常,双缓存逻辑如下所示:

protected override void OnPaint(PaintEventArgs e ){Graphics gxOff; //屏幕外的图像   if (m_bmpOffscreen == null) //要双缓冲的位图   {      m_bmpOffscreen = new Bitmap(ClientSize.Width, ClientSize.Height);   }            gxOff = Graphics.FromImage(m_bmpOffscreen);   gxOff.Clear(this.BackColor);   //绘制一些位图   gxOff.DrawImage(bmpParent, 0, 0, bmpRect, GraphicsUnit.Pixel);      //边界矩形Rectangle rc = this.ClientRectangle;   rc.Width--;   rc.Height--;               //绘制边界   gxOff.DrawRectangle(new Pen(Color.Black), rc);   //从内存位图绘制   e.Graphics.DrawImage(m_bmpOffscreen, 0, 0);   base.OnPaint( e );}
在上面的代码中,我们通过调用 Graphics 类的静态 FromImage 方法在与我们的控件大小相同的空位图中创建了一个 Graphics 对象。我们在内存中的 Graphics 对象上进行所有的绘图,完成后,将整个准备好的位图覆盖到控件的图形上即可。

添加这段代码
public void refresh()
{
SetStyle(ControlStyles.SupportsTransparentBackColor,true);
SetStyle(ControlStyles.AllPaintingInWmPaint, true);
SetStyle(ControlStyles.UserPaint, true);
SetStyle(ControlStyles.DoubleBuffer, true);
Refresh();
}

 

时间: 2024-08-04 00:52:01

C#的双缓存技术的相关文章

Symbian编程总结-图形图像篇-使用双缓存进行图形的绘制

所谓"双缓冲",指的是在绘图时并不是直接绘到屏幕上,而是在内存中开辟一个缓冲区,在这个缓冲区里完成所有的绘图后,直接将其"粘贴"到屏幕上.采用双缓冲技术,由于绘图操作大部分在内存中完成,所以绘图速度没有太大的制约:此外,当进行复杂的绘图操作时,使用双缓冲技术可以有效的防止画面的闪烁. 一.双缓存技术在J2ME中的实现 在J2ME中,实现双缓存绘制图形可以通过以下步骤实现: 首先创建一个类成员变量Image对象,此Image对象的图像尺寸为屏幕尺寸大小. 如:如果屏幕

Android采用双缓冲技术实现画板_Android

本文实例为大家分享了Android实现画板的具体代码,采用的技术是双缓冲技术,供大家参考,具体内容如下 1.双缓冲技术的概念 所谓的双缓冲技术其实很简单,当程序需要在指定的View上进行绘制时,程序并不需要直接绘制到该View组件,而是先绘制到一个内存中的Bitmap图片上(就是缓冲),等内存中的Bitmap绘制好之后,再一次性将Bitmap绘制到View组件上. 2.Android采用双缓冲实现画板  实现的思路: 1).定义一个内存中图片,将他作为缓冲区Bitmap cacheBitmap

Android采用双缓冲技术实现画板

本文实例为大家分享了Android实现画板的具体代码,采用的技术是双缓冲技术,供大家参考,具体内容如下 1.双缓冲技术的概念 所谓的双缓冲技术其实很简单,当程序需要在指定的View上进行绘制时,程序并不需要直接绘制到该View组件,而是先绘制到一个内存中的Bitmap图片上(就是缓冲),等内存中的Bitmap绘制好之后,再一次性将Bitmap绘制到View组件上. 2.Android采用双缓冲实现画板 实现的思路: 1).定义一个内存中图片,将他作为缓冲区Bitmap cacheBitmap =

2017双11技术揭秘—分布式缓存服务Tair的热点数据散列机制

作者:刘欢(浅奕) 1 问题背景 分布式缓存一般被定义为一个数据集合,它将数据分布(或分区)于任意数目的集群节点上.集群中的一个具体节点负责缓存中的一部分数据,整体对外提供统一的访问接口[1].分布式缓存一般基于冗余备份机制实现数据高可用,又被称为内存数据网格(IMDG, in-memory data grid).在云平台飞速发展的今天,作为提升应用性能的重要手段,分布式缓存技术在工业界得到了越来越广泛的关注和研发投入[2].弹性缓存平台[3]是分布式缓存集群在云计算场景下的新形态,其强调集群的

Intel公布八核心处理器24MB超大三级缓存技术

今年五月底,Intel公布了即将发布的八核心Nehalem-EX Xeon服务器处理器的一些初期资料,今天又特地通过http://www.aliyun.com/zixun/aggregation/7330.html">技术博客探讨了其中的24MB超大三级缓存技术. 上代架构的六核心Dunnington Xeon 7400已经扩充到了12/16MB三级缓存,而同样基于Nehalem架构.定位双路和单路市场的Xeon 5500/3500系列只有8MB,那么24MB是如何做到的呢?特别是功耗方面

【预告:直播回顾&资料下载】2017阿里巴巴双11技术十二讲,历数双11精彩技术干货

峰会专题:[2017阿里巴巴双11技术十二讲]https://yq.aliyun.com/promotion/428感谢各位参与此次直播活动,目前相关活动视频.整理文章已经在紧锣密鼓的编辑中,后续会第一时间在此文中发布,敬请期待! 12月13日议题 阿里下一代技术架构:云化架构演进之路讲师:叔同 / 阿里巴巴资深技术专家 演讲视频:即将发布演讲整理文章:即将发布PDF下载:即将发布 2017双11供应链的那些事儿讲师粤谦 / 阿里巴巴资深技术专家 演讲视频:即将发布演讲整理文章:即将发布PDF下

缓存技术方案改造思考

这是我对一个正在进行的重构项目,缓存技术方案改造点之一的一个想法: rc现有的实时缓存(其实也是准实时,失效时间的存在)设计: 存在的问题:现有的实时缓存方案(也并非真正意义上的实时,缓存失效时间的存在),与上游核心系统耦合度较高,核心系统强依赖下游欠核心系统,而且目前的查询服务性能也存在问题,比如区域销售豆腐块接口返回的数据量大,并且从tair->rc,rc->delivery需要经过两次网络传输,这之间网络传输及序列化.反序列化消耗大,而且出现问题时,由于排查链路和时间周期都长: 升级方案

【干货合集】大流量与高并发:双11技术盘点(二)

峰会专题:https://yq.aliyun.com/activity/112 报名入口:http://yq.aliyun.com/webinar/join/49?spm=5176.8155509.437644.12.F2Xi5N 从2009年第一届双十一购物节到2015年双十一全天912.17亿元的交易额,"双十一"当天订单创建峰值增长了350倍(每秒14万笔),支付峰值 (每秒8.59万笔)增长了430倍.为了保证越来越多购物者的用户体验,在IT基础设施上,阿里一次又一次地遭遇并超

使用asp缓存技术,提高asp承载能力

其实当你的web站点采用asp技术建立的初期,可能会感觉到的是asp动态网页技术带来的便利性,以及随意修改性.自如的http控制.但随着访问量的增加,你一定会发现自己的站点访问速度会越来越慢,IIS重新启动得越来越频繁. 一.什么是ASP缓存/为什么要缓存 其实当你的web站点采用asp技术建立的初期,可能会感觉到的是asp动态网页技术带来的便利性,以及随意修改性.自如的http控制.但随着访问量的增加,你一定会发现自己的站点访问速度会越来越慢,IIS重新启动得越来越频繁.那么,你一定想怎么优化