我有一个WinForms用户控件,我正在尝试获取当前字体的确切水平字符间距,预计是单行间距.
看起来字体的Size属性提供了这些信息,但显然是在点,我在像素工作.
var fontWidth = this.Font.Size; // Returns em-size in points--not pixels
Run Code Online (Sandbox Code Playgroud)
如果我自己创建字体,我可以指定它使用像素单位.但在我的情况下,字体是通过我的用户控件的属性设置的,我无法确定如何创建字体.不幸的是,字体的Unit属性是只读的.
如何以像素为单位制作现有字体返回指标?
请在MSDN上看到这篇文章:
要获取像素,请使用转换公式.
descentPixel = font.Size * descent / fontFamily.GetEmHeight(FontStyle.Regular);
Run Code Online (Sandbox Code Playgroud)
另请参阅获取单个字形指标(.net).
如果使用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);
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
18260 次 |
| 最近记录: |