当前位置: 代码迷 >> 综合 >> 孙鑫VC++深入详解:Lesson5 Part2 路径层 CDC::BeginPath,BeginPath
  详细解决方案

孙鑫VC++深入详解:Lesson5 Part2 路径层 CDC::BeginPath,BeginPath

热度:52   发布时间:2024-01-19 15:20:28.0


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

  相关解决方案