标签:
设备描述表中还有一个路径层。路径层就是在客户区上划定界线,界线之内的是各自的地盘。在MFC中,利用CDC类的BeginPath在设备描述表中打开一个路径层,然后利用图形设备借口(GDI)提供的绘图函数进行绘图操作,绘制完成后使用EndPath关闭这个路径层。
void CDrawView::OnDraw(CDC* pDC) { CDrawDoc* pDoc = GetDocument(); ASSERT_VALID(pDoc); if (!pDoc) return; // TODO: 在此处为本机数据添加绘制代码 CString str=L"设备描述表的路径层"; CSize sz; pDC->SetTextColor(RGB(255,0,0));//设置绘制文本的颜色 pDC->TextOutW(50,50,str); pDC->TextOutW(10,150,L"客户区中的裁剪区域"); sz=pDC->GetTextExtent(str);//取得指定字符串在窗口中显示时占据的宽度和高度 pDC->BeginPath();//打开路径层 //在路径层上画一个矩形,矩形的位置及宽度和高度正好覆盖在str串上。 //Rectangle函数是画一个矩形,并使用当前默认的白色画刷填充矩形,这样正好把 //绘制的str串覆盖掉。但是在路径层中绘制矩形,并不影响先前绘制的文字。 pDC->Rectangle(50,50,50+sz.cx,50+sz.cy); pDC->EndPath();//关闭路径层 //调用SelectClipPath将当前设置的路径层和设备描述表中已有的裁剪区域按照 //指定模式进行互操作. pDC->SelectClipPath(RGN_DIFF);//RGN_DIFF风格:使新裁剪区域包含当前裁剪区域, //但排除当前路径层区域 //pDC->SelectClipPath(RGN_AND);//RGN_AND风格:新的裁剪区域是当前裁剪区域和 //当前路径层的交集. //绘制网格 for(int i=0;i<200;i+=10) { pDC->MoveTo(CPoint(0,i)); pDC->LineTo(CPoint(200,i)); pDC->MoveTo(CPoint(i,0)); pDC->LineTo(CPoint(i,200)); } }
......
标签:
原文地址:http://www.cnblogs.com/nitianbenbendan/p/4261606.html