MFC路径层的使用

路径层主要运用于画图当中,其概念就像当年军阀割据时圈地一样,在地域上划定了界线,界线之内是各自的地盘,别人不能侵犯。VC++中利用CDC提供的BeginPath和EndPath这两个函数来实现路径层。BeginPath()其作用是在设备描述表中打开一个路径层;然后利用图形设备接口提供的函数进行绘图操作,例如绘制一些点、椭圆等;最后,绘图操作完成之后,应用程序调用EndPath()这个函数关闭这个路径层。

在绘图时,如果希望图的某一部分与其他部分分开处理,就可以利用路径层的独立性,调用
SelectClipPath
函数.
该函数参数如下:
RGN_AND
新的剪切区是剪切区与路径层的交集.
RGN_COPY
剪切区不变
RGN_DIFF
新的剪切区是旧的剪切区中除去路径层的部分
RGN_OR
新的剪切区是旧的剪切区和路径层的并集
RGN_XOR
新的剪切区是旧的剪切区和路径层的并集,但除去他们的交集部分

如何在Device Context中建立了一个路径层:
   1)先调用BeginPath()
   2)再调用其他的GDI绘图函数参数一个区域,如Rectangle生成一个矩形区域
   3)调用EndPath()  产生闭环的路径层(即一个绘图区域) 

路径区圈好后,还必须与客户区进行5种SelectClipPath()"裁剪"运算,产生新的绘图区域,在新的绘图区域上的绘图就能显示出路径层的特效

//------路径层 CDC::BeginPath, EndPath  
      CString cstr;  
       cstr="VC++ 路径层用矩形圈出的绘图区域";  
       pDC->TextOut(100,100,cstr);  
       CSize csz;  
       csz = pDC->GetTextExtent(cstr);  
       pDC->BeginPath();  
       pDC->Rectangle(100,100,100+csz.cx,100+csz.cy);//在路径层上绘制一个矩形:就是字符串cstr的所占的区域  
       pDC->EndPath();  // 如果不取消则下面画的横竖线就看不见,因为还是在路径层上  
       pDC->SelectClipPath(RGN_XOR);//把路径层的绘图与Device Context中的绘图区域进行 OR,XOR,COPY,AND,DIFF运算,产生了新的绘图区  


还可以直接用矩形 (100,100,200,200)来圈一个路径层,不用上面的一行字符的区域来圈了

//------路径层 CDC::BeginPath, EndPath  
      CString cstr;  
       cstr="路径层";  
       pDC->TextOut(150,150,cstr);    //把cstr输出在(150,150)这个点是将要创建的路径层的中心     
       pDC->BeginPath();  
       pDC->Rectangle(100,100,200,200);//在路径层上绘制一个矩形:就是字符串cstr的所占的区域  
       pDC->EndPath();  // 如果不取消则下面画的横竖线就看不见,因为还是在路径层上  
       pDC->SelectClipPath(RGN_OR);//把路径层的绘图与Device Context中的绘图区域进行 OR,XOR,COPY,AND,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);        
       }    


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值