有两种方法创建路径层:
(1)
pDC->BeginPath();
pDC->Rectangle(50,50,50+sz.cx,50+sz.cy);
pDC->EndPath();
pDC->SelectClipPath(RGN_DIFF);
(2)
CSize sz=pDC->GetTextExtent(str);
CRgn rn;
rn.CreateRectRgn(0,50,sz.cx,sz.cy);
pDC->SelectClipRgn(&rn,RGN_DIFF);
路径层有什么作用?可以保护我们先前的文本或者图像不被后来画的覆盖。
如:
CString str;
str.LoadString(IDS_CJP); //加载字符资源
CSize sz =pDC->GetTextExtent(str);
pDC->TextOut(250,150,str);
pDC->BeginPath();//打开一个路径层
(1)
pDC->BeginPath();
pDC->Rectangle(50,50,50+sz.cx,50+sz.cy);
pDC->EndPath();
pDC->SelectClipPath(RGN_DIFF);
(2)
CSize sz=pDC->GetTextExtent(str);
CRgn rn;
rn.CreateRectRgn(0,50,sz.cx,sz.cy);
pDC->SelectClipRgn(&rn,RGN_DIFF);
路径层有什么作用?可以保护我们先前的文本或者图像不被后来画的覆盖。
如:
CString str;
str.LoadString(IDS_CJP); //加载字符资源
CSize sz =pDC->GetTextExtent(str);
pDC->TextOut(250,150,str);
pDC->BeginPath();//打开一个路径层
pDC->Rectangle(250,150,250+sz.cx, 150+sz.cy);
//画一个矩形,并将此矩形做为路径层
pDC->EndPath();//关闭一个路径层
使输出的字符不被覆盖。
CPen pen(PS_SOLID,1,RGB(5,150,250));
CPen *oldpen =pDC->SelectObject(&pen);
//SelectObject()函数原型: CPen* SelectObject( CPen* pPen );
//好像这样用也能编译通过并正常运行:pDC->SelectObject(pen);
pDC->SelectClipPath(RGN_XOR);
//调用这个函数来使当前路径层剪切区域与新剪切区域进行互操作。
for (int i=100; i<=400; i +=10)
{//这段代码画风格是为了体现路径层的作用
pDC->MoveTo(100,i);
pDC->LineTo(400,i);
pDC->MoveTo(i,100);
pDC->LineTo(i,400);
}