我就吐一句槽,今天被这个函数完虐….
当我们需要获得一个字符串的长度时(注意,不是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函数的构造函数
有几个构造函数是不同的,一切以你的编译器为准!
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:http://bianchenghao.cn/36310.html