问题描述:
定义继承自CScrollView的类,在该类中进行画图,出现了一些问题:
拖动滚动条,图像部分随之移动,但是被边框覆盖过再次被拉出来后的部分没有显示了。
问题分析:
该问题出现是因为矩形框坐标设置不当。出问题的时候,准备被画的矩形坐标同当前客户区大小关联,也即是使用了
CRect rcClient;
GetClientRect(&rcClient);
pDC->DPtoLP(&rcClient);
const int nPading = 100;
int nLeft = rcClient.left + nPading;
int nRight = rcClient.right - nPading;
int nTop =rcClient.top - nPading;
int nBottom = nTop - 4*nPading;
CRect rect(nLeft, nTop, nRight, nBottom);
这个时候使用rect绘制就会出现上面的问题。
解决问题:
将rect坐标同rcClient相关联的部分修改,使他们不存在联系,问题即可解决。
深入分析:
出现该问题据本人分析是绘图过程中坐标处理不当,没有理解绘图时使用的坐标系统。
绘图时涉及到了窗口window和视口view
关于这个问题的解释,在http://bbs.csdn.net/topics/10155935中