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