全部博文(584)
分类: LINUX
2010-10-30 15:35:54
这里裁减的原理是计算没有覆盖部分的左上角坐标和长宽,并且记录在每个窗口的裁减链表里。计算方法如下所示:
图1
图2
设黑色的窗口是win1,白色窗口是win2,如图1所示。当用win2剪裁win1(即win2在win1上面将win1部分覆盖)时,如图2所示。
1. 计算两个窗口的相交部分即win2_a的坐标;
2. 将黑色窗口不相交的部分分为三部分即win_a,win_b,win_c,此处计算方法是将黑色窗口的左上点坐标与相交的坐标比较得出剪裁出的三部分坐标。
3. 在裁减链上删除以前的黑色坐标,添加新剪裁过的三个坐标。
如上述的方法,用新的窗口剪裁每一个窗口下剪裁链的块即可得到最后的结果。