词条 | GdipMeasureString |
释义 | 函数原型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 ) 函数声明VB - SDK'Declaration Public Function MeasureString ( _ text As String, _ font As Font, _ origin As PointF, _ stringFormat As StringFormat _ ) As SizeF C# - SDKpublic SizeF MeasureString( string text, Font font, PointF origin, StringFormat stringFormat ) C++ - SDKpublic: SizeF MeasureString( String^ text, Font^ font, PointF origin, StringFormat^ stringFormat ) F# - SDKmember MeasureString : text:string * font:Font * origin:PointF * stringFormat:StringFormat -> SizeF 易语言.版本 2 .DLL命令 GdipMeasureString, 整数型, "GdiPlus.dll", "GdipMeasureString", 公开 .参数 graphics, 整数型 .参数 string, 字节集 .参数 length, 整数型 .参数 font, 整数型 .参数 layoutRect, RectF .参数 stringFormat, 整数型 .参数 boundingBox, RectF .参数 codepointsFitted, 整数型, 传址 .参数 linesFilled, 整数型, 传址 函数说明Graphics的MeasureString方法,只要指定了字体和字符串后,用这个方法就能获得一个矩形的区域,这个区域是Graphics对象用DrawString方法在空间表面绘制字符串时所要的区域。 如果使用MeasureString去测量两个字符串,当StringFormat参数处于默认值时,一个在尾部有空格,一个在尾部没有空格,那么这两个字符串测量出来的宽度是一样的。例如“TextEditor” 和 “TextEditor ”的宽度是一样的。(全角和半角空格的命运一样,都被忽略不计了)。 对于这个问题,在参数StringFormat标志位是可以设定是不是要忽略尾部空格的。 在默认情况下,在测量字符串的长度时,GDI+会添加额外的1/6em长度,为悬垂的字形留出空间,例如斜体字符f。另外,宽度的算法也需要为某些称作grid fitting的添加空间。在对字形的轮廓进行数学表达,并把它映射到基于光栅的绘图表面上时,允许宽度有一些轻微的变化。 有时在测量字符串的长度时,不希望GDI+增加这个额外的长度。此时可以让GDI+使用StringFormat类,以特殊的方式处理文本。可以告诉GDI+使用特定的StringFormat对象,不增加额外的1/6em空间,而StringFormat对象是使用StringFormat.GenericTypography静态属性获得的。 实际应用中,也可以使用原型API GdipStringFormatGetGenericTypographic 直接创建带GenericTypography静态属性StringFormat。 此函数SDK支持的重载 MeasureString(String, Font) MeasureString(String, Font, SizeF) MeasureString(String, Font, Int32) MeasureString(String, Font, PointF, StringFormat) MeasureString(String, Font, SizeF, StringFormat) MeasureString(String, Font, Int32, StringFormat) MeasureString(String, Font, SizeF, StringFormat, Int32, Int32) 编程工具中如果安装有对应的SDK,可以直接使用,也可以使用API原型调用,方法类似。 MSDN中的介绍链接: 参数参数说明使用原型API参数介绍。 graphics GDI+ graphics 对象 string 待处理的字符串 length 字符串长度 font 字符串使用的字体 layoutRect RectF结构,字符串输出矩形区域。 StringFormat StringFormat类,用于指定字符串的样式,需要和文本输出函数的StringFormat相同。例如对齐,垂直排列等,会造成字符串在不同格式下输出矩形产生变化。 boundingBox RectF结构,函数执行后装载的字符串位置信息,左上角X和Y,长度和宽度 codepointsFitted 暂不使用,NULL linesFilled 暂不使用,NULL 相关应用暂无其他编程工具代码 易语言鉴于篇幅只提供部分相关核心代码 .版本 2 ' 创建带GenericTypographic静态标识的format,去掉了保留的空白区域。 GdipStringFormatGetGenericTypographic (format) ' 文本居中对齐 GdipSetStringFormatAlign (format, 1) ' 设置字符串输出矩形区域 AAA.X = 20 AAA.Y = 350 AAA.Width = 120 AAA.Height = 300 ' 将Ansi转成Unicode 测试文本B = A2W (测试文本) GdipSetTextRenderingHint (Graphics, 5) GdipDrawString (Graphics, 测试文本B, 取字节集长度 (测试文本B) ÷ 2 - 1, 字体句柄, AAA, format, 画刷句柄) ' strlenW为Unicode字符长度计算API,BBB为RectF结构,用来装载函数返回的字符串实际占用矩形区域 GdipMeasureString (Graphics, 测试文本B, strlenW (测试文本B), 字体句柄, AAA, format, BBB, 0, 0) |
随便看 |
百科全书收录4421916条中文百科知识,基本涵盖了大多数领域的百科知识,是一部内容开放、自由的电子版百科全书。