15,979
社区成员
发帖
与我相关
我的任务
分享
void CCharCurveView::MyDefault()
{
// TODO: Add your command handler code here
LOGFONT logFont;
memset(&logFont, 0, sizeof(logFont));
logFont.lfHeight = 400;
logFont.lfCharSet = GB2312_CHARSET;
strcpy(logFont.lfFaceName,_T("隶书"));
CFont font;
font.CreateFontIndirect(&logFont);
CClientDC dc(this);
CFont* pOldFont = dc.SelectObject(&font);
CString str = _T("我");
dc.BeginPath();
dc.TextOut(0,0,str);
dc.EndPath();
size = dc.GetTextExtent(str);
CRect rect(CPoint(0,0),size);
dc.SelectObject(pOldFont);
font.DeleteObject();
CRgn rgn;
CRgn rgnRect;
CRgn rgnResult;
rgnRect.CreateRectRgn(0,0,size.cx,size.cy);
rgnResult.CreateRectRgn(0,0,20,20);
rgn.CreateFromPath(&dc);
rgnResult.CombineRgn( &rgnRect, &rgn, RGN_DIFF );
CBrush* pBrush = CBrush::FromHandle((HBRUSH)GetStockObject(GRAY_BRUSH));
CBrush* pBrush2 = CBrush::FromHandle((HBRUSH)GetStockObject(BLACK_BRUSH));
//dc.FillRgn(&rgnResult,pBrush);
CRgn rgnRectLeft;
rgnRectLeft.CreateRectRgn(0,0, size.cx/2, size.cy);
CRgn rgnRectRight;
rgnRectRight.CreateRectRgn(size.cx/2,0, size.cx,size.cy);
CRgn rgnResult2;
CRgn rgnResult3;
rgnResult2.CreateRectRgn(0,0,20,20);
rgnResult3.CreateRectRgn(0,0,20,20);
rgnResult2.CombineRgn(&rgnRectLeft,&rgnResult,RGN_AND);
rgnResult3.CombineRgn(&rgnRectRight,&rgnResult,RGN_AND);
dc.FillRgn(&rgnResult2,pBrush);
dc.FillRgn(&rgnResult3,pBrush2);
}
CString name;
name = "中国大家";
CString temp;
temp = name.Mid(0,2);
pDC->SetTextColor(RGB(51,255,255));
pDC->TextOut(100,100,temp);
CSize size = pDC->GetOutputTextExtent(temp);//获得字符宽度
temp = name.Mid(2,2);
pDC->SetTextColor(RGB(51,255,100));
pDC->TextOut(100+size.cx,100,temp);
temp = name.Mid(4,2);
pDC->SetTextColor(RGB(100,100,100));
pDC->TextOut(100+size.cx*2,100,temp);
temp = name.Mid(6,2);
pDC->SetTextColor(RGB(151,50,100));
pDC->TextOut(100+size.cx*3,100,temp);