Hi:欢迎来到提高路网-专业的论文辅导网站     

所有论文科目分类

首页 > 免费论文 > 计算机论文 > 计算机软件

基于NET的双缓冲技术

作者:2017-10-10 16:15:55阅读:文章来源:

  通常在图形应用程序开发过程中,经常会遇到图形显示时屏幕不停闪烁的现象。画面要产生动态效果,编程时要在视图中进行贴图,并不断刷新重绘,但是刷新频率过高,就会出现闪屏的现象。又或者是实时数据显示,数据不断更新,数据所在的控件也需要不断地刷新,这样也会出现闪屏的现象。因此,闪屏这个问题严重地影响了用户的体验。

  针对这个问题有一些解决办法:刷新特定的矩形区域、页面切换、双缓冲等。但在一般情况下,开发人员会选择双缓冲技术,因为适用范围广泛,不过需要较多的内存。

  1  闪屏

  闪屏现象出现的可能原因:为了维持窗口的正常显示,每次都需要调用Paint事件进行重绘操作刷新画面。虽然窗口在刷新过程中会使所有图元重绘,不过图元的重绘并不引发Paint事件,因此窗口刷新时只会调用一次Paint事件。在窗口刷新过程中,重绘的图元都会马上显示到窗口,只要有图元的位置,就会有图元的更替刷新,当图元较多数量时,图元更替刷新的时间存在肉眼可辨的时差时,就会导致闪烁现象出现;当图元数量较少时,窗体重图元更替刷新的位置也不多,窗口闪烁现象并不会很严重;随着图元数量的增加,绘图窗口每次刷新引起的图元重绘数量也会增加,窗口刷新的位置分布就更加广泛,闪烁现象就会越来越严重。又或者是因为窗口刷新时间间隔小于图元显示到窗口所耗费的时间,因此在对图元进行鼠标跟踪绘制操作,抑或是对图元进行变形操作,由于调用Paint事件次数大量增加,窗口刷新次数也同时增加,即使窗口刷新时所有图元的更替刷新没有时间差异,也会因为延时关系导致闪烁现象。

  2 双缓冲技术

  2.1 基本思想

  Windows的重绘窗体操作一般分为3个阶段:

  第一阶段,背景清除,通过Windows的操作系统级背景刷清除重绘窗体上的无效区域。

  第二阶段,背景绘制,通过窗体的受保护方法OnPaint-Background完成窗体背景绘制,当然也可以通过重写该方法进行自定义窗体背景的操作。

  第三阶段,图形绘制,通过窗体的受保护方法OnPaint完成图形绘制,然后引发Paint事件。3个阶段的操作全完成后,Windows窗体的绘图才算真正完成。而双缓冲技术就是将窗体重绘过程的3个阶段合为一次操作,从而实现图形闪烁现象的消除。具体实现方法是先在一块内存(后端缓冲区)中完成重绘窗体的3个阶段,然后再将绘制好的图形从内存中拷贝到显存中,如图1所示,由于在屏幕上只执行了一次显示图形的操作,因此用户观察不到窗体重绘的中间画面,从而消除了图形的闪烁。

  2.2 实现方法

  2.2.1 利用默认双缓冲

  利用默认双缓冲的方法有两种,第一种也就是最简单的便是将.NetFramework中的Double Buffered属性设置为true:this.DoubleBuffeed=true;

  第二种方法便是通过SetStyle为Windows窗体和Windows控件启用默认的双缓冲。在.Net框架2.0以上版本中设置参数属性如下: Double Buffer和Double Buffer参数设为true;而UserPaint设为true表示控件自行负责;All Painting lnWmPaint设为true表示禁止擦除背景。

  2.2.2 自定义双缓冲

  .netframework中的类Buffered Graphics Context独立管理和分配图形缓冲区。应用程序域都通过其默认Buffered Graphics Context实例实现应用程序默认双缓冲的管理。一般情况下,应用程序的应用域存在唯一性,因而每个应用程序通常都只有一个默认的由Buffered Graphics Manager类管理Buffered=Graphics Context实例。管理Buffered Graphics Context实现双缓冲的具体步骤如下:引用Buffered Graphics Context类的实例。通过调用Buffered Graphics Context.Allocate方法创建Buffered Graphics类的实例。通过设置Buffered Graphics.属性将图形绘制到缓冲区。

  在缓冲区中完成所有的图形绘制操作后,再将缓冲区的图形内容通过Buffered Graphics.Render方法复制到与该缓冲区关联的绘图图面或者指定的绘图图面。完成呈现图形之后,对Buffered Graphics实例调用Dispose方法完成系统资源的释放。

  2.2.3 编程实例

  无锡地铁一号线的远程故障传输地面软件也需要消除其中的图形闪烁现象。以无锡地铁一号线的远程故障传输地面软件为例子,讲述怎样使用.NET框架内置双缓冲技术消除图形闪烁。

  无锡地铁一号线的远程故障传输地面软件是将ERM模块的故障数据通过无线传输传到地面软件,然后通过地面软件将故障数据显示出来。ERM模块将数据打包发给车载PIS,然后车载PIS发给中间服务器,中间服务器再转发给地面软件。地面软件接收的是实时数据,每隔50ms接收的数据就填充显示一次,界面显示的内容需要不断刷新,刷新次数过于频繁,就会出现闪屏的现象。

  为解决这个问题,此软件使用了双缓冲技术中的默认缓冲。数据是在ListView、ListBox两个控件上显示,通过Set-Style为ListView、ListBox启用默认缓冲。

  没有使用双缓冲时,在屏幕上直接绘制ListBox与ListView,然后填充数据,就会看见屏幕上的数据不停地闪烁;而双缓冲技术的绘图,先在内存上创建的“虚拟屏幕”上绘图、填充数据,然后将绘好了的图形一次性“拷贝”到屏幕上。

  其实也可以使用自定义双缓冲来实现,其效果与默认双缓冲一样。默认双缓冲的使用比较简便,自定义的却繁琐一些,但是更具灵活性,然而默认双缓冲是在每次绘图时建立新缓冲区,使用完便马上释放。当应用中绘图操作密集时,这种频繁地分配、释放内存,将会严重影响程序的性能。

  3 结语

  消除闪屏的常用编程技术便是双缓冲技术。具体应用中需要根据应用的简单难易程度进行选择采用默认双缓冲还是自定义双缓冲,对于绘图操作较少的简单应用程序,一般采用启动默认双缓冲;而对于那种绘图操作密集的应用程序,例如:动画、游戏等,应该优先选择自定义双缓冲,可以控制双缓冲的中间过程,来提高程序性能。

最近相关

最新更新

热门推荐

[经济法]九好集团财务造假案例分析与对策思考
 九好集团是2017年第一家因“忽悠式重组上市”而被证监会处以顶格处罚的后勤托管服务公司,主要业务模式是作为中介服务平台为客户寻找后勤服务供应商,根据成交额收取一定比例的服务费。九好集团财务造假手段,可以代表我国拟上市公司财务造假普遍存在的现状...[全文]
[行政管理]单纯收受行政管理对象财物的司法认定
  在单纯收受下级、行政管理对象的财物行为中,国家工作人员并未利用职务上的便利为对方谋取利益,也不存在具体请托事项。司法解释规定此类行为一定条件下可构成受贿,但在具体执行中尚有不少疑难问题。事实上,将单纯收受下级、行政管理对象的财物认定为受贿,...[全文]
[世界历史]海绵城市建设的困难误区及推进建议
 1、海绵城市热潮  传统的城市雨水系统建设模式已经对水环境造成巨大的负面影响与危害,近年来的城市内涝灾害广受病垢。  事实上,严重的径流污染、水文循环的破坏乃至生...[全文]
[信息]联系方式
欢迎访问提高路网。您有任何问题,都可与提高路网取得联系。以下是提高路网的联系渠道: 一、推荐您与提高路网的在线客服联系,以获得最快最及时的回复。如果客服不在线请致电138...[全文]
[法理法史]国际法历史发展因素
广义地说,古代社会已有国际法(可称之为“古代国际法”),或者至少有国际法的遗迹。当然,一般意义上,国际法是指近现代国际法,下面是编辑老师为大家准备的国际法历史发展...[全文]
[财政税收]港澳地区及大陆税收政策的差异
摘要:虽然港澳地区和大陆同属中国政府管辖,但由于历史原因,港澳在社会经济制度、经济发展模式、发展水平及税收管理政策等方面和大陆存在差异。我国经济的发展使港澳和大陆之间...[全文]
[信息]关于我们
提高路-论文网(www.tigaolu.com)全国论文辅导平台。本着帮助有志于提高自身任职现状的人们,提高路-论文网是国内较早提供论文、职称解决方案的服务商,是中国在线学术服...[全文]
[艺术理论]颐和园园林艺术论文范例赏析(共2篇)
  颐和园园林艺术论文怎么写呢?颐和园园林是中国现在保存最完好和规模最大的古代园林,同时也是我国园林艺术的杰出代表,是我国清代著名的皇家园林,其兴建历经乾隆、光绪两朝,园林布局集中了皇家园林与私家园林、北方园林与南方园林之特色,下面是千里马...[全文]
[硕博论文]基于上市大数据企业的经营绩效与研发投入关系研究
近年来,大数据(Big Data)已经成为学术界和业界所共同关注的热点和焦点。随着网络和信息技术的普及,人类产生的数据量呈指数级增长,这与原始信息时代已经很不一样。...[全文]
[图书馆论文]图书馆服务质量改进措施论文(共2篇)
  第1篇:英国高校图书馆服务质量信息发布制度分析  英国是最早建立图书馆服务质量保障体系的国家之一,经历了图书馆内部自评到外部强化的质量保障过程,最终实现了内外力量的有机结合,形成了严格的质量保证体系。在这个体系中,服务质量信息发布扮演了沟通...[全文]
[硕博论文]RV减速器可靠性研究与关键件疲劳可靠性分析
RV减速器是结合行星传动和巧妙地利用曲柄轴实现摆线传动的减速器,具有结构紧凑、过载能力强和可靠性高等优点。目前国内的RV减速器仅处于研究生产阶段,其主要原因是...[全文]
[硕博论文]基于双边市场的平台纵向一体化策略研究
双边平台具有网络外部性、不对称定价、用户多归属等双边市场所特有的特征,这些特征使得双边平台的竞争模式与传统企业有所区别,平台用户数量是平台企业的主要竞争目...[全文]