background image

  Application.Run(new BasicX());

 }

}

 

  上述代码分成两个基本的步骤来创建示例程序。首先 InitializeComponent 方法包含一些属性的设置

 

和附加窗体 Paint 事件的处理过程。注意,在方法中控件的样式也同时被设置,设置控件的样式也是自
定义 Windows 窗体及控件行为的一种有效途径,譬如:控件的"ResizeRedraw"属性指示当窗体的大小变
化发生以后需要对其完全进行重绘,也就是说重绘时总是需要对整个窗体的客户区域进行重绘。窗体的

客户区域 是指除了标题栏和边框的所有窗体区域。可以进行一个有趣的试验,取消该控件的属性然后

再运行程序,我们可以很明显的看出为什么该属性会被经常的设置,因为窗体调整大小后的无效区域根
本不会被重绘。
  好了,我们需要注意一下 BasicX_Paint 方法,正如先前所提到的,Paint 事件在程序需要重绘时被激
活,程序窗体利用 Paint 事件来负责回应需要重绘的系统消息,BasicX_Paint 方法的调用需要一个对象 
sender 和一个 PaintEventArgs 类型的变量,PaintEventArgs

 

类的实例或称之为变量 e 封装了两个重要的数

 

据,第一个就是窗体的 Graphics 对象,该对象表示窗体可绘制的表面也称之为画布用于绘制诸如线、文
本以及图像等,第二个数据就是 ClipRectangle,该 Rectangle 对象表示窗体上无效的的矩形范围,或者
说就是窗体需要重绘的区域。记住,当窗体的 ResizeRedDraw 设置后,调整大小后该 ClipRectangle 的大
小实际就等于窗体整个客户区域的大小,或者是被其它程序窗体遮盖的那部分剪切区域。关于部分剪切
区域的用处我们会在智能重绘章节作更详细的阐述。