下面代码获取了四个文字的路径,怎么把设备上下文中包含的文字路径合并成区域CRgn?//创建字体
m_fontKaiTi.CreateFont(200,0,0,0,FW_BLACK,
FALSE , FALSE , FALSE,
GB2312_CHARSET,
OUT_DEFAULT_PRECIS,
CLIP_DEFAULT_PRECIS,
DEFAULT_QUALITY,
FIXED_PITCH | FF_MODERN,
"楷体_GB2312"); CFont* pOldFont=(CFont*)pDC->SelectObject(&m_fontKaiTi);
pDC->SetBkMode(TRANSPARENT);
//定义路径
pDC->BeginPath();
pDC->TextOut(0,10,"龙",2);
pDC->TextOut(200,10,"腾",2);
pDC->TextOut(400,10,"虎",2);
pDC->TextOut(600,10,"跃",2); }
pDC->EndPath();
pDC->SelectObject(pOldFont);
//检取路径数据
int nCount=pDC->GetPath(NULL,NULL,0);
CPoint* points=new CPoint[nCount];
BYTE* bytes=new BYTE[nCount];
pDC->GetPath(points,bytes,nCount); //绘制出路径来
CPoint ptStart;
for(i=0;i<nCount;i++)
{
switch(bytes[i])
{
//移动当前点位置
case PT_MOVETO:
pDC->MoveTo(points[i]);
ptStart=points[i];
break;
//画直线
case PT_LINETO:
pDC->LineTo(points[i]);
break;
//画贝塞尔曲线
case PT_BEZIERTO:
pDC->PolyBezierTo(points+i,3);
i=i+2;
break;
//画贝塞尔曲线并封闭图形
case PT_BEZIERTO|PT_CLOSEFIGURE:
points[i+2]=ptStart;
pDC->PolyBezierTo(points+i,3);
i=i+2;
break;
//画直线并封闭图形
case PT_LINETO|PT_CLOSEFIGURE:
pDC->LineTo(ptStart);
break;
}
}//????????????
//我想在这里获取文字路径构成的区域保存到一个CRgn中,如何实现?
//请高手在这个位置添加几行转换代码,谢谢!//删除字体
m_fontKaiTi.DeleteObject();
m_fontKaiTi.CreateFont(200,0,0,0,FW_BLACK,
FALSE , FALSE , FALSE,
GB2312_CHARSET,
OUT_DEFAULT_PRECIS,
CLIP_DEFAULT_PRECIS,
DEFAULT_QUALITY,
FIXED_PITCH | FF_MODERN,
"楷体_GB2312"); CFont* pOldFont=(CFont*)pDC->SelectObject(&m_fontKaiTi);
pDC->SetBkMode(TRANSPARENT);
//定义路径
pDC->BeginPath();
pDC->TextOut(0,10,"龙",2);
pDC->TextOut(200,10,"腾",2);
pDC->TextOut(400,10,"虎",2);
pDC->TextOut(600,10,"跃",2); }
pDC->EndPath();
pDC->SelectObject(pOldFont);
//检取路径数据
int nCount=pDC->GetPath(NULL,NULL,0);
CPoint* points=new CPoint[nCount];
BYTE* bytes=new BYTE[nCount];
pDC->GetPath(points,bytes,nCount); //绘制出路径来
CPoint ptStart;
for(i=0;i<nCount;i++)
{
switch(bytes[i])
{
//移动当前点位置
case PT_MOVETO:
pDC->MoveTo(points[i]);
ptStart=points[i];
break;
//画直线
case PT_LINETO:
pDC->LineTo(points[i]);
break;
//画贝塞尔曲线
case PT_BEZIERTO:
pDC->PolyBezierTo(points+i,3);
i=i+2;
break;
//画贝塞尔曲线并封闭图形
case PT_BEZIERTO|PT_CLOSEFIGURE:
points[i+2]=ptStart;
pDC->PolyBezierTo(points+i,3);
i=i+2;
break;
//画直线并封闭图形
case PT_LINETO|PT_CLOSEFIGURE:
pDC->LineTo(ptStart);
break;
}
}//????????????
//我想在这里获取文字路径构成的区域保存到一个CRgn中,如何实现?
//请高手在这个位置添加几行转换代码,谢谢!//删除字体
m_fontKaiTi.DeleteObject();
PathToRegion
The PathToRegion function creates a region from the path that is selected into the specified device context. The resulting region uses device coordinates.HRGN PathToRegion(
HDC hdc // handle to DC
);
Parameters
hdc
[in] Handle to a device context that contains a closed path.