当前位置:C++技术网 > 资讯 > 利用Graphics::MeasureString函数测量字符串的宽度,高度

利用Graphics::MeasureString函数测量字符串的宽度,高度

更新时间:2015-10-26 21:39:52浏览次数:1+次

我就吐一句槽,今天被这个函数完虐....

当我们需要获得一个字符串的长度时(注意,不是length,这只是返回该字符串的字符个数),我们需要知道的是一个字符串的长度也就是一个字符串的宽,说到底就是像素大小,没错,我们的问题就是得到一个字符串的高(多少个像素),宽(多少个像素)。

那么我们就需要调用一个GDI+函数:


Graphics::MeasureString
测量用指定的 Font 绘制的指定字符串。他有很多的重载函数,你可以自己查MSDN,我们看下它的参数原型:
函数原型编辑


GpStatus WINGDIPAPI GdipMeasureString(
GpGraphics *graphics,
GDIPCONST WCHAR *string,
INT length,
GDIPCONST GpFont *font,
GDIPCONST RectF *layoutRect,
GDIPCONST GpStringFormat *stringFormat,
RectF *boundingBox,
INT *codepointsFitted,
INT *linesFilled
)

Graphics的MeasureString方法,只要指定了字体和字符串后,用这个方法就能获得一个矩形的区域,这个区域是Graphics对象用DrawString方法在空间表面绘制字符串时所要的区域。
参数说明使用原型API参数介绍。
graphics
GDI+ graphics 对象
string
待处理的字符串
length
字符串长度
font
字符串使用的字体
layoutRect
RectF结构,字符串输出矩形区域。
StringFormat
StringFormat类,用于指定字符串的样式,需要和文本输出函数的StringFormat相同。例如对齐,垂直排列等,会造成字符串在不同格式下输出矩形产生变化。
boundingBox
RectF结构,函数执行后装载的字符串位置信息,左上角X和Y,长度和宽度
codepointsFitted
暂不使用,NULL
linesFilled
暂不使用,NULL
额...在这里说下,你在MSDN上查到的MeasureString函数的构造函数有很多种,可是与你的编译器上的提示的构造函数的可能会有不同的,最起码,我的编译器就是这样的,我是VS2015,在15上,MeasureString函数的构造函数



有几个构造函数是不同的,一切以你的编译器为准!