利用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 }

 

你可能感兴趣的:(字符串)