求GDI+中获得字符串准确长度的方法
我先是用MeasureString来获取字符串的长度,但总比实际的大,后来查到了MSDN上这样一段话:
备注
MeasureString 方法旨在与个别字符串一起使用,它在字符串前后包括少量额外的空格供突出的标志符号使用。 另外,DrawString 方法会调整标志符号镑值以优化显示质量,它显示的字符串可能比 MeasureString 报告的窄。 若要获得适合布局中相邻字符串的度量值(例如,实现格式化文本时),请使用 MeasureCharacterRanges 方法或者使用带有 StringFormat 的 MeasureString 方法中的一种,然后传递 GenericTypographic。 同样,请确保 Graphics 的 TextRenderingHint 是 AntiAlias。
于是我按照它说的"使用带有 StringFormat 的 MeasureString 方法中的一种,然后传递 GenericTypographic。 同样,请确保 Graphics 的 TextRenderingHint 是 AntiAlias"这样方法,代码如下:
Graphics graph(hdc);
graph.SetTextRenderingHint(TextRenderingHintAntiAlias);
StringFormat stringFormat;
stringFormat.SetAlignment(StringAlignmentNear);
stringFormat.GenericTypographic();
rcfComp.X = x;
rcfComp.Y = y;
converted = MultiByteToWideChar(CP_ACP, 0, input, inputnum, wstr, 256);
graph.MeasureString(wstr, converted, pCompFont, rcfComp, &rcfComp);
可是获取的rcComp的宽度,仍然和原来一样,比实际字符串要宽.
我是个新手,不知道上面代码是否正确,麻烦帮我看一下,谢谢!