17.3 绘制和重绘
在GUI程序中,所有的绘制都在控件上完成,它们构成了全部或部分屏幕窗口,如同我们在CHelloWorldAppView::Draw()中所看到的:
当需要绘图时,调用派生控件类的Draw()函数;
Draw()使用SystemGc()来得到图形上下文;
它在Rect()函数定义的区域内绘图。 但实际稍稍复杂一些。控件不仅必须绘制它的内容,而且在它发生变化或系统要求重绘(redraw)时,必须进行重绘。当首次构造窗口时,或者窗口在被某些其他应用程序或对话框遮蔽后,重新显示整体或一部分时,系统发起的重绘会发生。
当应用程序改变了控件的内容,或者改变了绘制参数(比如颜色、滚动或缩放状态),并要在更新的显示中显示这些改变时,应用程序发起的重绘会发生。
另外,还有其他各种情况(部分是系统发起的,部分是应用程序发起的),都必须进行重绘。举例来说,关闭对话框是应用程序发起的,而对该对话框下面的控件的重绘是应系统发出的请求而进行的,而它的内容可能根据用户到对话框的输入改变。
为了真正地理解重绘,我们必须首先回顾模型-视图-控制器范例。这是探讨GUI系统的好办法,而且使用此概念,更容易进行下面的讨论。
【责任编辑:
董书 TEL:(010)68476606】