ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
```c++ void CCFontDlg::OnPaint() { CPaintDC dc(this); //定义 //dc.SetBkMode(TRANSPARENT);//设置一个背景色模式(背景色在绘画之前没有改变) CString str; str.Format(_T("使用缺省字体输出"));//赋值给str CFont* pFont = GetFont(); //获取当前属性给到字体 Normal(&dc,pFont); //定义一个函数 Neight(&dc,pFont); //定义一个函数 Weight(&dc,pFont); //定义一个函数 Width(&dc,pFont); //定义一个函数 Other(&dc,pFont); Escape(&dc,pFont); CreateFont(&dc); SelectColor(&dc); dc.TextOut(10,10,_T("使用缺省字体输出")); LOGFONT lf; //定义一个LOGFONT 结构体 pFont ->GetLogFont(&lf); //取回一个LOGFONT结构体的复制 } //当用户拖动最小化窗口时系统调用此函数取得光标 //显示。 HCURSOR CCFontDlg::OnQueryDragIcon() { return static_cast<HCURSOR>(m_hIcon); } void CCFontDlg::Normal(CDC* pDC, CFont* pFont) { CString s; s.Format(_T("使用缺省字体输出")); pFont = pDC -> SelectObject(pFont);//选择字体 pDC->TextOut(10,30,s);//选择pFont字体打印 //LOGFONT lf; // pFont->GetLogFont(&lf);//取回一个LOGFONT结构体的复制 pDC->SelectObject(pFont);//恢复进入函数前的字体 } void CCFontDlg::Neight(CDC* PDC, CFont* pFont) { LOGFONT lf; pFont->GetLogFont(&lf);//取回一个LOGFONT结构体的复制 -12 400 134 宋体 lf.lfHeight *= 2; //-12 变成 -24 CFont font; font.CreateFontIndirect(&lf);// pFont = PDC->SelectObject(&font); PDC->TextOut(10,50,_T("测试字体高度(字体大小)加倍")); PDC ->SelectObject(pFont);//恢复进入函数前的字体 } void CCFontDlg::Weight(CDC* pDC, CFont* pFont) { LOGFONT lf; pFont->GetLogFont(&lf);//取回一个LOGFONT结构体的复制 -12 400 134 宋体 lf.lfWeight = 700; CFont font; font.CreateFontIndirect(&lf);// pFont = pDC->SelectObject(&font);//获取初始字体 pDC->TextOut(10,70,_T("测试粗体字")); pDC ->SelectObject(pFont);//恢复进入函数前的字体 } void CCFontDlg::Width(CDC* pDC,CFont* pFont) { LOGFONT lf; pFont->GetLogFont(&lf);//取回一个LOGFONT结构体的复制 -12 400 134 宋体 lf.lfWidth = lf.lfHeight/2; CFont font; font.CreateFontIndirect(&lf);//把字体初始化成LOGFONT结构体的设置 pFont = pDC->SelectObject(&font);//获取初始字体 pDC->TextOut(10,90,_T("测试字体高度(字体大小)加倍")); pDC ->SelectObject(pFont);//恢复进入函数前的字体 } void CCFontDlg::Other(CDC* pDC, CFont* pFont) { LOGFONT lf; pFont->GetLogFont(&lf);//取回一个LOGFONT结构体的复制 -12 400 134 宋体 lf.lfItalic = TRUE; lf.lfStrikeOut = TRUE;//删除线 lf.lfUnderline = TRUE;//下划线 CFont font; font.CreateFontIndirect(&lf);//定义字体类型 pFont = pDC->SelectObject(&font);//选择字体 pDC->TextOut(10,110,_T("测试下划线,删除线")); pDC->SelectObject(pFont);//恢复 } void CCFontDlg::Escape(CDC* pDC, CFont* pFont) { LOGFONT lf; pFont->GetLogFont(&lf);//取回一个LOGFONT结构体的复制 -12 400 134 宋体 跟CreateFontIndirect 定义字体类型是互为相反的函数 lf.lfItalic = TRUE; lf.lfEscapement = 200;//倾斜度 CFont font; font.CreateFontIndirect(&lf);//定义字体类型 pFont = pDC->SelectObject(&font);//选择字体 pDC->TextOut(10,180,_T("测试倾斜度")); pDC->SelectObject(pFont);//恢复 } void CCFontDlg::CreateFont(CDC* pDC) { CFont ft1; ft1.CreatePointFont(100, _T("幼儿"));//定义字体与实际字体相差十倍 CFont *pFont = pDC->SelectObject(&ft1);//选择字体 pDC ->TextOut(10,200,_T("简单字体创建的方法!")); LOGFONT lf = {12}; _tcscpy(lf.lfFaceName,_T("宋体"));//对一个数组进行字符串拷贝 lf.lfCharSet = GB2312_CHARSET; lf.lfItalic = TRUE; lf.lfStrikeOut = TRUE;//设置删除线 CFont ft2; ft2.CreateFontIndirect(&lf);//定义字体类型 pDC->SelectObject(&ft2);//选择字体 pDC->TextOut(10,240,_T("完整字体创建的方法!")); pDC->SelectObject(pFont);//恢复 } void CCFontDlg::SelectColor(CDC* pDC) { COLORREF clBack = pDC->SetBkColor(RGB(0,0,255)); pDC->TextOut(200,200,_T("文字背景颜色")); int nMode = pDC->SetBkMode(TRANSPARENT);//设置背景颜色 COLORREF clText = pDC->SetTextColor(RGB(255,0,0));//设置字体颜色 pDC -> TextOut(200,300,_T("字体颜色"));//输出文字 pDC->SetBkMode(nMode); pDC->SetBkColor(clBack); pDC ->SetTextColor(clText);//恢复字体颜色 } ```