期刊鉴别 论文检测 免费论文 特惠期刊 学术答疑 发表流程

基于LayeredWindow的异形窗体局部刷新

时间:2014-03-07 14:28 文章来源:http://www.lunwenbuluo.com 作者:魏振钢张恩伟 点击次数:

摘要:通过对现存界面库的分析,解释当前异形窗体的创建与刷新的难点,及刷新时CPU占用率高的问题,通过对updateLayeredwindow接口的深度剖析,阐述了利用双界面合成的方法来模拟局部刷新。采用先对局部窗体重绘,然后与原界面合成的方法,大量减小了刷新时的重绘量,从而大幅度减轻了CPU的占用率。

  关键词:界面异形窗体updateLayeredwindow局部刷新

  中图分类号:TP3011.11文献标识码:A文章编号:1003-9082(2014)02-0001-02

  一、引言

  随着计算机的发展,当今用户对应用软件不再仅仅满足于功能的完善,而且对用户界面友好性、美观性要求越来越高。所以,以往的桌面应用程序开发并不能满足这些界面开发要求,这就致使越来越多的界面库的涌现,而现今的界面库大都基于DirectUI的设计思想[1],但由于原有窗体是规则的,所以根本无法实现异形窗体。随着微软分层窗体的设计思想及UpdateLayeredWindow函数的出现,异形窗体的实现才真正成为可能。但由于UpdateLayeredWindow本身的特性导致每次都必须全部重绘整个程序界面,所以即便是一个像素的改变,都将导致整个窗体的刷新,这对于CPU的占用是非常巨大的,尤其在大型软件中,这将是灾难性的。

  本文在解析分层窗体和UpdateLayeredWindow的基础上,利用双界面合成的方法模拟实现异形界面的局部刷新,彻底解决了异形窗体的刷新问题,为DirectUI实现异形窗体扫除了一大障碍,为界面库的研究提供了新方法,新思路。

  二、异形窗体与局部刷新技术

  1.异形窗体简介

  1.1分层窗体简介

  在创建窗体时,拥有扩展属性WS_EX_LAYERED的窗体就是分层窗体了。通过分层窗体,我们可以实现异形、具有alpha值的窗体,另外还能为窗体实现动作,解决了以往的纯静态窗体的现实。对于分层窗体的绘图机制,可以有两种选择,其一是采用以往的WM_PAINT消息响应机制及局部刷新技术,但这种方法无法实现异形窗体。其二就是使用UpdateLayeredWindow函数,将绘图工作由系统托管,用户只需告诉系统需要绘制哪些图像;

  1.2UpdateLayeredWindow函数简介及现存问题

  UpdateLayeredWindow函数是WIN32API里功能非常强大的一个函数。通过在内存DC上作画,然后把该DC传递给UpdateLayeredWindow,系统就会托管后面的图像储存、压缩、渲染等工作,并且所有的绘图工作都由UpdateLayeredWindow来执行,也就是说你在内存DC上画了什么,就会显示出来什么[2]。

  UpdateLayeredWindow改变了以往窗体绘制方式,由于每次绘图都要由UpdateLayeredWindow来操作,所以每次我们都要画出当前的整个应用程序界面,这就导致每次都要重新绘制整个窗体。这样就引起了我们引言中讲到的CPU占用高的问题。正是由于这个问题,当今的所有开源界面库全部都没有基于UpdateLayeredWindow来实现界面,当然也就无法实现异形,所以对于异形窗体,如何实现局部刷新是必须要解决的。


  •   论文部落提供核心期刊、国家级期刊、省级期刊、SCI期刊和EI期刊等咨询服务。
  •   论文部落拥有一支经验丰富、高端专业的编辑团队,可帮助您指导各领域学术文章,您只需提出详细的论文写作要求和相关资料。
  •  
  •   论文投稿客服QQ: 论文投稿2863358778 论文投稿2316118108
  •  
  •   论文投稿电话:15380085870
  •  
  •   论文投稿邮箱:lunwenbuluo@126.com

联系方式

  • 论文投稿客服QQ: 论文投稿2863358778
  • 论文投稿客服QQ: 论文投稿2316118108
  • 论文投稿电话:15380085870
  • 论文投稿邮箱:lunwenbuluo@126.com

热门排行

 
QQ在线咨询
咨询热线:
15380085870
微信号咨询:
lunwenbuluoli