利用GetBounds函数准确测量包含汉字的字符串长度
说道测量字符串长度,我最早想到的是利用MeasureString函数,但经过尝试发现,对于不含汉字的字符串,它确实能够准确计算出,但对于包含汉字的字符串,往往不起作用!因此,通过各方位的baidu结果发现,可以利用计算路径边界的方法,也就是使用GetBounds函数(这里要感谢CSDN中的一个回复,是他帮助了我解决这个问题),具体代码如下:
1 SIZE ReBateTipWindow::GetTextBounds(UString szText) 2 { 3 GraphicsPath path; 4 5 FontFamily fontFamily(L"Times New Roman"); 6 Gdiplus::Font font(&fontFamily, 13, FontStyleRegular, UnitPixel); 7 StringFormat stringFormat; 8 stringFormat.SetTrimming( StringTrimmingCharacter); 9 stringFormat.SetFormatFlags(StringFormatFlagsNoWrap ); 10 11 path.AddString(szText,-1,&fontFamily,font.GetStyle(),font.GetSize(),PointF(0,0),&stringFormat); 12 RectF rcBound; 13 path.GetBounds(&rcBound); 14 15 SIZE size; 16 size.cx = (long)rcBound.Width+4; 17 size.cy = (long)rcBound.Height; 18 19 return size; 20 }