您可以通过呼叫GetUpdateRect来取得失效矩形的座标,并且可以使用ValidateRect函式使显示区域的矩形有效。当您接收到一个WM_PAINT讯息时,无效矩形的座标可以从PAINTSTRUCT结构中得到,该结构是用BeginPaint函式填入的。这个无效矩形还定义了一个「剪裁区域」,您不能在剪裁区域外绘图。
Windows有两个作用於剪裁区域而不是矩形的函式,它们类似於InvalidateRect和ValidateRect:
和
当您接收到一个由无效区域引起的WM_PAINT讯息时,剪裁区域不一定是矩形。
您可以使用以下两个函式之一:
或
通过将一个剪裁区域选进装置内容来建立自己的剪裁区域,这个剪裁区域使用装置座标。
GDI为剪裁区域建立一份副本,所以在将它选进装置内容之後,使用者可以删除它。Windows还提供了几个对剪裁区域进行操作的函式,如ExcludeClipRect用於将一个矩形从剪裁区域里排除掉,IntersectClipRect用於建立一个新的剪裁区域,它是前一个剪裁区域与一个矩形的交,OffsetClipRgn用於将剪裁区域移动到显示区域的另一部分。
CLOVER程式
CLOVER程式用四个椭圆组成一个剪裁区域,将这个剪裁区域选进装置内容中,然後画出从视窗显示区域的中心出发的一系列直线,这些直线只出现在剪裁区域所限定的范围,结果显示如图5-20所示。
要用常规的方法画出这个图形,就必须根据椭圆的边线公式计算出每条直线的端点。利用复杂的剪裁区域,可以直接画出这些线条,而让Windows确定其端点。CLOVER如程式5-8所示。