由于MFC中CDC有GetTextExtent()能够得到字符串的高度宽度 像素单位,因此天然想到c#的GDI+的MeasureString,这个一样是测量字符串高度宽度,可是这个不一样于CDC,他不适用CDC.GetTextExtent()的适用领域,GDI+ MeasureString会本身处理矩形区域,返回这个矩形区域SizeF,这就是为何是浮点而不是整数,它根本就不是字符串准确的高度宽度。 举个例子:给定字符串s,用Graphics的MeasureString获取高度宽度sizeF,并在一个给定的起点显示以sizeF为高度宽度的矩形大小和字符串shtml
以100,400坐标位奇点绘制sizeF大小的矩形 和 字符串 改sizeF是测量该字符串获得的。c#
效果以下:(没处理显示质量 这个不是重点)注意'g'和'串'post
说明Gdi+的MeasureString跟CDC的GetTextExtent彻底不同 GDI+在字符串四周添加一些长度,以适应字符串绝对能够被测量获得的SizeF包裹住,并且在末尾添加的更多空白,大概是想包裹住文字单击时的鼠标状态。this
相似上面的代码,使用TextRender的MeasureText精确得到包裹字符串的区域,效果以下:spa
区别在于字符串末尾增宽 和 对英文字符下部的增宽处理。orm