在使用CScrollView(滚动视图)类时,不需要在其OnDraw/OnPaint中全部进行重绘;只需获取其update region,绘制落在此区域内的对象即可。这样可以提高显示效率,减少闪烁。
在拖动窗口大小时(WM_SIZE消息),update region是整个客户区;在点击或者拖放滚动条时(或者使用了CScrollView::ScrollToPositon函数),update region是相应的局部矩形(即新出现在在窗口中的部分)。不管是那种情况,可以将update region转换至“用户坐标系”,遍历用户在此坐标系中打算绘制的对象,确定哪些对象落在了update region内,以便进行重绘。这样,在CScrollView::OnDraw/OnPaint中仅需绘制少量对象即可。(非update region内的图形由Windows负责填充)
1