5. 路径层 CDC::BeginPath,BeginPath
如何在Device Context中建立了一个路径层:
1)即调用BeginPath()
2)再调用其他的GDI绘图函数参数一个区域,如Rectangle生成一个矩形区域
3)调用EndPath() 产生闭环的路径层(即一个绘图区域)
pDC->BeginPath();
pDC->Rectangle(200,200,200+csz.cx,200+csz.cy);
//pDC->TextOut(200,200,cstr);//好像路径层上不能输出文本?只能画点,矩形,椭圆等绘图操作?
看来路径层确实只是圈了一块区域,是用点,矩形,椭圆等等图形区域来圈出的路径层(即区域),然后再与客户区进行
图形区域叠加运算
pDC->EndPath();
SelectClipPath(RGN_DIFF);//把路径层的绘图区域与Device Context中的绘图区域进行 OR,XOR,COPY,AND,DIFF运算.
这5个参数会产生新的不同的绘图区,那么就对下面的画横线和竖线的现实产生影响.
总之: 路径区圈好后,还必须与客户区进行5种SelectClipPath()"裁剪"运算,产生新的绘图区域,在新的绘图区域上的绘图就能显示出路径层的特效.
//------路径层 CDC::BeginPath, EndPathCString 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运算,产生了新的绘图区
//
CDC::SelectClipPath
BOOL SelectClip