函式原型
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
public SizeF MeasureString(
string text,
Font font,
PointF origin,
StringFormat stringFormat
)
public:
SizeF MeasureString(
String^ text,
Font^ font,
PointF origin,
StringFormat^ stringFormat
)
member 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)