|||
首先 在ONDRAW()函数里需要对CDC对象进行转换,CScrollview类的ONPREPAREDC()成员函数会自动根据水平和垂直滚动条位置自动设定DC原点,(即滚动条起始位置为原点),因为原CCLIENT DC对象始终以实际客户区的左上角为原点。
下例实现在虚拟客户区画一个坐标系统:
void CSplitLayerView::OnDraw(CDC* pDC)
{
OnPrepareDC(pDC);
CPen pen[5];//定义一个画笔对象
pen[0].CreatePen(PS_SOLID,5,RGB(255,0,0));//创建一个画笔 画框架
pen[1].CreatePen(PS_SOLID,3,RGB(0,0,255));//
pen[2].CreatePen(PS_SOLID,1,RGB(0,255,0));//
CPen *poldpen;//定义一个保存指向设备上下文原油画笔的指针
poldpen=pDC->SelectObject(&pen[0]);
CSize size;
size=GetTotalSize();//获取整个滚动虚拟客户区的大小
pDC->Rectangle(size.cx/20,size.cy/20,size.cx*3/20,size.cy*18/20);
// pDC->Rectangle(size.cx*4/20,size.cy/20,size.cx*6/20,size.cy*18/20);
pDC->SelectObject(poldpen);//恢复设备上下文的原有画笔
pen[0].DeleteObject(); //删除所创建的画笔资源
}
Archiver|手机版|科学网 ( 京ICP备07017567号-12 )
GMT+8, 2025-1-7 11:02
Powered by ScienceNet.cn
Copyright © 2007- 中国科学报社