[英]gdi+ - Graphics.MeasureString either too wide or too narrow
我正在使用 C# 中的System.Drawing
庫來測量字符串的大小:
SizeF size = gfx.MeasureString("Hello", myFont);
但是,這會返回一個在文本周圍有一點間距的大小。 這是用紅色邊界框呈現的文本,表示返回的MeasureString
大小。 框和文本的左上角是完全相同的點。
我在 Stack Overflow 上偶然發現了這個問題,該問題建議使用StringFormat.GenericTypographic
來刪除間距。 因此,我將代碼更改為以下內容:
SizeF size = gfx.MeasureString("Hello", myFont, 0, StringFormat.GenericTypographic);
這會產生以下結果(同樣,框的左上角和文本相同):
幾乎完美,但尺寸始終太窄並切入最后一個字母。 這些結果可以用我嘗試過的任何大小的任何字體、任何字符串和任何width
參數來重現。
我目前的解決方法是在繪制文本時將文本向左偏移 5 個像素。 我錯過了什么?
結果我還必須使用StringFormat.GenericTypographic
來繪制字符串,而不僅僅是用它來測量。 新的 DrawString 調用如下所示:
gfx.DrawString("Hello", myFont, myBrush, topLeft, StringFormat.GenericTypographic);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.