C#环境下GDI+绘图效率研究

来源 :中国科技博览 | 被引量 : 0次 | 上传用户:joseph0330
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
  [摘要]本文在简单介绍GDI和GDI+的基础上,指出GDI+在绘制动画时效率不足的劣势,并对三种不同的GDI+动画绘图方式进行了详细的阐述;最后实现了一个GDI+界面绘图程序,比较和验证了三种不同方式的绘图性能。实验表明,使用双缓冲和bitblt结合的方式,可以有效的解决直接绘制方式的闪烁问题,提高绘图效率。
  [关键词]GDI+;动态绘图;双缓冲;bitblt
  中图分类号:P631.84 文献标识码:A 文章编号:1009-914X(2015)05-0134-01
  1.引言
  GDI是微软公司的著名的二维图形引擎,GDI+则是微软公司为了提高显示效果而推出的一种新型图形引擎。GDI是Graphics Device Interface的缩写,含义是图形设备接口,它的主要任务是负责系统与绘图程序之间的信息交换,处理所有Windows程序的图形输出。
  GDI+是Windows XP中的一个子系统,它主要负责在显示屏幕和打印设备输出有关信息,它是一组通过C++类实现的应用程序编程接口。顾名思义,GDI+是以前版本GDI的继承者,出于兼容性考虑,Windows XP仍然支持以前版本的GDI,但是在开发新应用程序的时候,开发人员为了满足图形输出需要应该使用GDI+,因为GDI+对以前的Windows版本中GDI进行了优化,并添加了许多新的功能。
  作为图形设备接口的GDI+使得应用程序开发人员在输出屏幕和打印机信息的时候无需考虑具体显示设备的细节,他们只需调用GDI+库输出的类的一些方法即可完成图形操作,真正的绘图工作由这些方法交给特定的设备驱动程序来完成,GDI+使得图形硬件和应用程序相互隔离.从而使开发人员编写设备无关的应用程序变得非常容易。Microsoft Windows GDI+服务分为以下3个主要部分:
  (1)二维矢量图形。矢量图形由图元组成,而图元则由一系列坐标系统的点集组成。例如,一条直线可以由它的两个端点所确定,一个矩形可以通过给出它的左上角点的位置加上它的宽度、高度来确定。一个简单的路径可以由一个由直线连接而成的点数组来描述。一条贝塞尔样条是由4个控制点所描述。
  (2)图象。某些图片很难或者不可能采用矢量图形技术来显示。比如,工具栏按钮图片和图标和一张拥挤的棒球馆的高分辨率的数码照片。这种类型的图像采用位图进行存储,即由表示屏幕上独立点的颜色的数字型数组所组成。用于存储位图信息的数据结构往往比矢量图形要复杂的多,因此出于此种原因GDI+中提供了好几种类,如Bitmap类。
  (3)排版。排版关系到多种字体、尺寸和样式文字的显示。GDI+提供对这项复杂的任务给人深刻印象的的支持。新的特性中包括了子象素抗锯齿功能,它使得在液晶显示屏上可以显示更加平滑的显示文本。
  2.GDI+绘图方式简介
  下面对Microsoft Visual Studio 2010编程环境下基于C#编程语言的GDI+的几种不同的绘图方式进行简介。在Ctt中,GDI+图形图像处理用到的主要命名空间是Systenl.Drawing,它提供了对GDI+基本图形功能的访问,主要有Graphics类、Bitmap类、从Brush类继承的类、Font类、Icon类、Image类、Pen类、Color类等。C#中GDI+绘图的方式主要分为直接绘制,双缓冲和使用GDI函数三种。以绘制一个矩形为例,无论采用哪一种方法,都需要先在当前窗口先创建画板、矩形和画刷:
  Graphics g=this.CreateGraphics();∥在当前窗口创建一个画板
  ∥定义矩形,参数为起点横纵坐标以及其长和宽
  Rectangle rect=new Rectangle(10,10,200,200);
  ∥单色填充
  SolidBrush b1=new SolidBrush(Color.Blue);∥定义蓝色画刷
  如果使用直接绘制的方法,则只需要调用FillRectangle函数用画刷直接填充矩形即可:
  g.FillRectangle(b1,rect);∥填充这个矩形
  这种方法比较简单易用,容易理解,在绘制静态图形时,能够很好的满绘图需求。但是在绘制动画时,不仅效率低下,而且会产生图片闪烁的现象。其原因是GDI+画图是将所有的图元先存入显卡的缓存,显卡会每隔一段时间将显存中的内容输出到显示器中。每画一个图元,系统就要做一次图形的绘制操作。图形的重绘是很占用资源的,特别当需要重绘的图形数量很多的时候,所造成的消耗就特别大,导致闪烁,不流畅等情况。
  使用双缓冲的绘图方式可以有效的消除闪烁的现象。双缓冲的主要思路是在内存中开辟一块与显存中大小一致的内存区域,一般使用BitMap类来创建这个内存区域,即在内存中开辟一块虚拟画布,然后将所有需要画的图元一个个先画在这块“虚拟画布”上,最后在一次性将整块“虚拟画布”画到真正的窗体上。因为所有的单个图形的绘制都不是真正的调用显示系统来“画”,所以不会占用显示系统的开销,极大的提高的绘图效率,避免闪烁,不流畅等现象。使用双缓冲绘图的主要代码如下:
  Bitmap bitmap=new Bitmap(this.width,this.height);∥创建一个与窗口大小相同的虚拟画布
  Graphics bg=Graphics.Fromhnage(bitmap);∥在这个画布上创建画板
  bg.FillRectangle(b1,rect);∥在虛拟画布上绘制矩形
  g.DrawImage(bitmap,0,0);∥将内存中绘制好的图形输出到屏幕
  双缓冲技术有效的解决了GDI+绘图时的屏幕闪烁问题,但是DrawImage函数效率十分低下,拖慢了内存图形画到显存中进行显示的效率,解决的办法是引入GDI的绘图函数bitblt来进行从内存中向显存中进行绘图。bitblt是gdi32.dll中的一个函数,可以大大提高内存图形向显存的传输速度。为了区分三种不同的绘图方式,创建了三个panel,并分别在这三个panel上绘制矩形,红色矩形是直接绘制,黄色矩形为双缓冲方式绘制,蓝色矩形的绘制使用了bitblt函数。
  3.绘图效率比较
  为了比较三种不同方式的绘图效率,本文做了以下实验。使用GDI+绘制一个图形界面,该实验主要在一个600×600的区域内每隔10ms绘制60×60个圆,每隔10ms改变其颜色(红和蓝两种颜色)。统计每帧的绘图时间,实时计算帧速,得到的结果如图2图4所示。
  可以看到,采用直接绘制的方式,绘图效率非常低,平均帧速只有4帧/s左右,而且闪烁的现象非常的明显;而使用双缓冲技术绘图则有效的解决闪烁的问题,绘图效率也有所提高,帧速达到了20帧/s左右;而bitblt函数则进一步提高了程序的绘图效率,帧速达到了40帧/s左右。
  4.结论
  GDI+绘图引擎由于其易用性和与C#的良好集成,在信号处理软件的开发中可以很好的承担二维信号图形的绘制。但是直接绘图的方式绘制动画效率低下且容易产生图片闪烁的问题。使用双缓冲技术可以有效的消除闪烁并提高绘图效率;而使用bitblt函数代替DrawImage函数则可以进一步提高GDI+的绘图效率。本文对三种不同的绘图方式进行了详细的阐述,并编写了一个实验程序比较了三种方式的优劣。实验程序表明,使用双缓冲+bitblt的方式,绘图性能最好。
其他文献
[摘要]大数据技术是指从各种各样类型的巨量数据中,快速获得有价值信息的技术。大数据正以难以想象的发展速度带来新一轮信息化革命,它给我们带来新的思维变革、商业变革和管理变革,身处其中的我们必将面临其带来的机遇与挑战。本文在简要阐明大数据时代的相关概念和特点后,浅析了大数据时代的数据处理与挖掘的方法,给读者提供了一个全面的概述。  [关键词]大数据;大数据处理方法;数据挖掘;大数据思维  中图分类号:
期刊
[摘要]轧钢是钢铁企业生产工艺中最为核心和关键的工序。其生产工艺水平和设备运行能力将直接影响着钢产品的品质。然而,在当今的轧钢生产过程中还存在诸多电气安全隐患问题,给生产稳定顺行带来较多未知因素,甚至引发生一些安全事故,危及生产安全和作业人员安危。因此有必要研究轧钢电气安全管理措施,以降低事故的发生率,提高企业的生产效益。文章重点分析了轧钢电气安全管理隐患的主要影响因素及提高轧钢电气安全管理水平的
期刊
[摘要]现代网络信息化水平日益提高,网页信息量急剧增加,搜索引擎已经成为人们获取所需知识的必要工具之一。本文结合校园网搜索引擎的具体需求,介绍校园网搜索引擎的整体框架。其中,lucene作为开源的检索框架,具有很好的应用性。  [关键词]搜索引擎;lucene;网络爬虫;站内搜索  中图分类号:TP391.1 文献标识码:A 文章编号:1009-914X(2015)05-0126-01  1引言 
期刊
[摘要]火电厂控制系统用于规范机组的运行,防止机组运行偏离火电厂的标准要求。火电厂的控制系统较容易受到干扰因素的影响,无法达到准确的控制作用,很容易出现控制误差或失误的情况,促使干扰源成为影响火电厂控制系统的主要因素,降低控制系统的运行效率,因此,本文通过对火电厂控制系统干扰源进行研究,分析有效的对策。  [关键词]火电厂;控制系统;干扰源;对策  中图分类号:TL362 文献标识码:A 文章编号
期刊
[摘要]施工机械设备在油建工程的施工建设过程中发挥着重要的作用,其运行状态直接关系着油建工程项目的施工质量和施工效率。因此应充分认识到施工机械维修和管理的重要性和必要性,结合油建工程项目施工的实际情况,探讨有效的施工机械维修和管理措施,延长施工机械设备的使用寿命,不断提高油建工程施工机械化水平。本文分析了施工机械维修和管理现状,阐述了施工机械维修和管理的有效对策。  [关键词]施工机械;维修;管理
期刊
[摘要]本文主要介绍了大学生就业管理系统的设计,主要设计功能对大学生找工作和企业发布岗位有基本管理功能,如:大学生和企业的注册功能,大学生修改自己的简历功能,大学生找工作的功能,大学生浏览自己找过的工作功能,企业修改自己资料的功能,企业发布岗位的功能,企业刷选简历的功能,企业邀请大学生面试的功能,后台对个人会员和企业会员的基本管理的功能,后台对新闻的管理功能(包括发布新闻)等一系列功能。  [关键
期刊
[摘要]图书网是提供一个图书平台,为了让用户能够快速的购买,浏览图书。本系统集成图书购买,在线阅读,图书下载,图书新闻,图书论坛等大型综合图书网。  [关键词]图书网;在线阅读;论坛  中图分类号:TP311.1 文献标识码:A 文章编号:1009-914X(2015)05-0136-01  1引言  图书网是基于电子商务的系统,提供一个图书销售平台,注册用户能够在线买卖图书。目前我国B2B商务交
期刊
[摘要]计算机管理系统的应用是各企业、公司迈向现代化企业的重要标识,必将成为商品管理现代化不可缺少的手段。本研究基于浏览器/服务器(B/S)模式,设计一款适合普通物流中心仓库信息管理的软件,用以提高库存管理的效率。  [关键词]管理系统;仓库信息;现代化  中图分类号:F270.7;TP315 文献标识码:A 文章编号:1009-914X(2015)05-0131-01  1引言  当今时代是飞速
期刊
[摘要]即时通信,由于其具有实时性、跨平台性、成本低、效率高等优点而受到广泛的使用。设计并实现一个能够处理多用户进行实时、安全的即时通信系统具有较强的现实意义。本系统设计基于JAVA的简单即时通信系统,系统采用C/S模式。  [关键词]即时通信系统;JAVA;C/S  中图分类号:TP319 文献标识码:A 文章编号:1009-914X(2015)05-0138-01  1引言  ava即时通信系
期刊
[摘要]随着无线局域网(WLAN)技术的普及和移动通讯3G业务的发展,WLAN成为网民上网的主要途径之一。WEP加密作为无线网络安全的重要防线,是网络黑客入侵无线网络的主要攻击对象。下面,笔者将介绍一种如何在Windows环境下,不使用引导光盘而直接进行无线加密WEP入侵破解,并还原无线网络WEP加密密钥的技术方法,供大家参考。  [关键词]WEP;安全机制  中图分类号:TP393 文献标识码:
期刊