Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1680859
  • 博文数量: 584
  • 博客积分: 13857
  • 博客等级: 上将
  • 技术积分: 11883
  • 用 户 组: 普通用户
  • 注册时间: 2009-12-16 09:34

分类: LINUX

2010-10-30 15:35:54

窗口裁减的含义就是将窗口因为重叠而不会显示出来的部分裁剪掉不用,这样做的好处是在进行显示写屏的时候,窗口不需要显示的部分不会进行写屏操作,可以减少写屏的操作量,提高窗口显示的速度。

这里裁减的原理是计算没有覆盖部分的左上角坐标和长宽,并且记录在每个窗口的裁减链表里。计算方法如下所示:

 

1

 

 

 

 

2

设黑色的窗口是win1,白色窗口是win2,如图1所示。当用win2剪裁win1(即win2win1上面将win1部分覆盖)时,如图2所示。

1.  计算两个窗口的相交部分即win2_a的坐标;

2.  将黑色窗口不相交的部分分为三部分即win_awin_bwin_c,此处计算方法是将黑色窗口的左上点坐标与相交的坐标比较得出剪裁出的三部分坐标。

3.  在裁减链上删除以前的黑色坐标,添加新剪裁过的三个坐标。

如上述的方法,用新的窗口剪裁每一个窗口下剪裁链的块即可得到最后的结果。

阅读(1072) | 评论(0) | 转发(1) |
给主人留下些什么吧!~~