本文主要是介绍MFC中的路径层(path brack),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
路径层,就像军阀割据时的圈地那样,在地域上划定界线,界线之内的是各自的地盘,别人不能侵犯。
在MFC中,创建路径层是利用CDC类提供的BeginPath和EndPath这两个函数来实现的。
首先,调用BeginPath,该函数的作用是在设备描述表中打开一个路径层,
然后,利用图形设备接口(GDI)提供的绘图函数进行绘图操作,例如绘制一些点、矩形、椭圆等;
最后,在绘图操作完成之后,应用程序通过调用EndPath函数关闭这个路径层。
代码如下:
void CTextView::OnDraw(CDC* pDC)
{
CTextDoc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
// TODO: add draw code for native data here
// CString str("维新中心");
CString str;
str="维新中心";
pDC->TextOut(50,50,str);
CSize sz=pDC->GetTextExtent(str);
str.LoadString(IDS_WEIXIN);
pDC->TextOut(0,200,str);
pDC->BeginPath();//添加路径层
pDC->Rectangle(50,50,50+sz.cx,50+sz.cy);
pDC->EndPath();
pDC->SelectClipPath(RGN_DIFF);//裁剪区域
for (int i=0;i<300;i+=10)
{
pDC->MoveTo(0,i);
pDC->LineTo(300,i);
pDC->MoveTo(i,0);
pDC->LineTo(i,300);
}
}
效果如下:
可以看到“维新中心”这个字符串没有被直线穿插,这就是路径层所起的作用。
如果希望整副图形中的某一部分和其他部分有区别,那么就把它放到路径层中,然后利用SelectClipPath()函数设置一种模式,例如SelectClipPath(RGN_DIFF)或者SelectClipPath(RGN_AND),让路径层与裁剪区域进行相互操作以达到一种特殊的效果。
这篇关于MFC中的路径层(path brack)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!