簡體   English   中英

以像素為單位獲取字體的度量

[英]Get a Font's Metrics in Pixels

我有一個 WinForms 用戶控件,我正在嘗試獲取當前字體的確切水平字符間距,該字體預計為等寬。

看起來字體的Size屬性提供了此信息,但顯然以磅為單位,我以像素為單位。

var fontWidth = this.Font.Size;   // Returns em-size in points--not pixels

如果我自己創建字體,我可以指定它使用像素單位。 但在我的情況下,字體是通過我的用戶控件的屬性設置的,我無法確定字體是如何創建的。 不幸的是,字體的Unit屬性是只讀的。

如何使現有字體以像素為單位返回指標?

如果使用 System.Windows.Forms.Control 對象,則可以使用以下代碼:

using (Graphics g = this.CreateGraphics())
{
    var points = myFont.SizeInPoints;
    var pixels = points * g.DpiX / 72;
    MessageBox.Show("myFont size in pixels: " + pixels);
}

請參閱 MSDN 上的這篇文章:

如何:獲取字體度量

要獲得像素,您可以使用轉換公式。

descentPixel = font.Size * descent / fontFamily.GetEmHeight(FontStyle.Regular);

另請參閱獲取單個字形指標 (.net)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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