每个窗体、图片框和框架控件,都具有 ClipControls 属性。ClipControls 是 Boolean 属性,当它设置为 True 时,导致容器定义一个裁剪区域,用以绘制该容器中几乎所有的控件,但不包括:
将 ClipControls 属性设置为 False,则可提高窗体在屏幕上的绘制速度。对于具有许多不重叠控件的窗体,如对话框等,绘制速度的提高最为明显。
Clipping 是当显示窗体或容器时,决定窗体或容器的哪部分被绘制的过程。决定窗体或容器的哪部分被绘制所用的轮廓线,或称为“被裁剪”,就定义为 clipping region。当基于 Windows 的应用程序,需要保存部分显示内容,同时重画其余部分时,裁剪区域是十分有用的。
ClipControls 缺省设置为 True。当 ClipControls 属性为 True 时,Windows 在 Paint 事件之前,窗体或容器的背景定义一个裁剪区域。此裁剪区域将围绕所有非图形控件。当使用 ClipControls 时,标签的作用与图形控件类似。
在 Paint 事件期间,Windows 只重画裁剪区域的背景,而不重画非图形控件。图 12.8 显示出具有四个控件的一个窗体、一个用 Line 方法绘制的矩形、以及通过将 ClipControls 设置为 True,为窗体创建的裁剪区域。注意,该裁剪区域没有裁剪窗体上标签或形状控件的边线。背景上用 Line 方法所画的矩形只在裁剪区域显示。
图 12.8 当 ClipControls 为 True 时所创建的裁剪区域
当 ClipControls 为 False 时,Windows 不在 Paint 事件之前给窗体或容器的背景定义裁剪区域。而且,Paint 事件中图形方法的输出,只显示在窗体或控件必须重画的部分。因为计算和管理裁剪区域需要花费时间,那么设置 ClipControls 为 False 就可以使含有许多非重叠控件的窗体(如复杂对话框)显示得更快。
注意 应避免把 ClipControls 为 True 的控件嵌入到 ClipControls 为 False 的控件中。这样做会导致嵌入控件不能正确重画。把容器和控件的 ClipControls 都设置为 True,就可避免这种情况发生。
详细信息 请参阅“性能和兼容性设计”中的“优化显示速度”。