关于“按指定大小的区域自适应显示字符”问题
问题模型描述:现在已知有一个固定的区域
CRect rect; rect.SetRect(left, top, right, bottom);
有一个字符串,该字符串可能较长,且由中文和字母组成,需要根据该区域进行字符串的显示,其问题点在于如何规范分割换行点,遇到需要分割换行时,区分汉字和字母,以确保不乱码;
目前需要一个函数能够实现此功能,希望得到答疑解惑:
程序代码:
/*绘制文本(以区域为基准):textcolor-文字颜色,bkcolor-背景色,left,top,right,bottom-区域,size-字体大小*/ void CDrawJM::DrawTextAboutRect(CDC *pDC, COLORREF textcolor, COLORREF bkcolor, CString m_strText, unsigned int left, unsigned int top, unsigned int right, unsigned int bottom, unsigned int size) { CFont *oldFont; CFont m_textFont; m_textFont.CreateFont(size, 0, 0, 0, FW_BOLD, 0, 0, 0, ANSI_CHARSET, OUT_STROKE_PRECIS, CLIP_STROKE_PRECIS, DRAFT_QUALITY, VARIABLE_PITCH | FF_SWISS, _T("宋体")); //size-字体大小 oldFont = pDC->SelectObject(&m_textFont); pDC->SetTextColor(textcolor); //设置字体颜色 pDC->SetBkColor(bkcolor); //设置字体背景色 //该部分为实现区域自适应显示字符串功能代码,文字显示可使用库函数 pDC->TextOut(a,b,str); pDC->SelectObject(oldFont); m_textFont.DeleteObject(); }
[此贴子已经被作者于2019-11-26 18:13编辑过]