当前位置: > 论文中心 > 建筑论文 >

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

时间:2014-03-07 14:49 点击:
UpdateLayeredWindow函数是WIN32API里功能非常强大的一个函数。通过在内存DC上作画,然后把该DC传递给UpdateLayeredWindow,系统就会托管后面的图像储存、压缩、渲染等工作,并且所有的绘图工作都由UpdateLayeredWi

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

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

  2.双界面合成方法模拟实现局部刷新

  通过上节的讲解,全部刷新是由于UpdateLayeredWindow自身实现的问题,所以我们无法更改,所以我们只有采用模拟的方法来实现局部刷新。

  如图一所示,原界面上有三个按钮控件,均为椭圆状,虚线框表示每个控件的大小,实际并不存在,这里要实现的效果是,当用户点击第一个控件时,将其改变成另一样式(菱形),双界面合成方法实现局部刷新的过程如下:

  2.1首先,保存原界面;(步骤一)

  众所周知,在WINDOWS程序中,绘图DC是与画布相关联的,只要我们的画布不销毁,界面就不会改变。所以,我们先保存上次的画布,为合成最新的画布做准备。

  2.2创建一个临时画布,并在其上画出当前最新的控件样式及其背景;(步骤二)

  2.4将最新绘制的控件及其背景根据更新区域大小进行裁剪;(步骤四)


   论文榜(www.zglwb.com),是一个专门从事期刊推广、投稿辅导的网站。
本站提供如何投稿辅导,寻求投稿辅导代理,快速投稿辅导,投稿辅导格式指导等解决方案:省级投稿辅导/国家级投稿辅导/核心期刊投稿辅导//职称投稿辅导。


栏目列表
联系方式
推荐内容
 
QQ在线咨询
投稿辅导热线:
189-6119-6312
微信号咨询:
18961196312