您的位置:首页 > 其它

路径层的概念

2012-04-18 22:21 190 查看
有两种方法创建路径层:

(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);

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: