5._Findx0()首先将矩形变成一条竖线r.x1=r.x0,之后查找Z序链表中
与竖线矩形pRect能够相交的控件,这些控件将改变r.x0的值,
如果控件与该竖线相交,那么r->x0向右平移至控件右边界x1+1处,
即:r.x0 = rWinClipped.x1+1;超过_ClipContext.ClientRect.x1就跳转进入
下一窄条计算goto NextStripe;下一窄条将沿用上一次计算出来的y1+1作为r.y0
7.最后_ClipContext.CurRect = r;
因此可以看到,_ClipContext.CurRect就是可以此次绘制动作,因为Z序遮盖原因,
所能绘制的一个窄条区域,那么需要绘制的矩形区域_ClipContext.ClientRect是由
多个间隔的_ClipContext.CurRect窄条区域组成的,所以对于一个背景图片的绘制
实际上是被所有Z序值大的可视窗体进行剪切计算出的一个一个_ClipContext.CurRect
镂空矩形拼接而成的,能绘制的区域_ClipContext.CurRect就是那些个方形小洞洞.
8.WM__ActivateClipRect()使用_SetClipRectUserIntersect(&_ClipContext.CurRect);
最终把_ClipContext.CurRect转换到GUI_Context.ClipRect,
对于用户自己定义了一个剪切范围GUI_Context.WM__pUserClipRect,那么_ClipContext.CurRect
将与用户定义的范围进行运算,找到子集,使得_ClipContext.CurRect缩小到最小.
综上可知:首先计算出y1底线值,之后开始从左到右计算一个个的剪切矩形区,
当该y1对应的_ClipContext.ClientRect.x0~_ClipContext.ClientRect.x1之间
的所有剪切矩形全部计算完毕之后,计算下一个y1底线值,开始周而复始的运算
直到r.y0 >_ClipContext.ClientRect.y1时,所有剪切域都已经计算完毕,ok可以return 0;
顺序:_Findy1()->_Findx0()->_Findx1().
可以参照图《μC/GUI-v3.90a之Dialog窗体调用GUIClear剪切域填充过程图》