簡體   English   中英

gdi+ - Graphics.MeasureString 太寬或太窄

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM