rat*_*ler 0 c# fonts winforms fontmetrics
这可能是一个重复的问题,但我无法找到答案.
我唯一的问题是如何获得FontWinForms中使用的高度(上升+下降,没有任何间距),以像素为单位.我有Segoe UI 8.25 Regular字体.
Font.Height 给我15(像素?)
我可以使用字体指标和使用FontFamily:
GetEmHeight 给了我2048.GetCellAscent 给我2210(大于EM?)GetCellDescent 给了我514根据MSDN的公式
我应该做以下事情:
(ascent + descent) * font.Height / emHeight
which is
(514 + 2210) * 15 / 2210 = 19 pixels.
Run Code Online (Sandbox Code Playgroud)
所以:
TextRenderer.MeasureText对于"Tg"字符串给我13 px.我做错了什么以及这些价值观是如何相互关联的?目标是尽可能接近截图的测量结果.
TextRenderer.MeasureText 使用大量资源,我不能在抽奖期间随时使用它.
要获取像素,请使用转换公式:
descentPixel = font.Size * descent / fontFamily.GetEmHeight(FontStyle.Regular);
Run Code Online (Sandbox Code Playgroud)
从此链接https://docs.microsoft.com/en-us/dotnet/framework/winforms/advanced/how-to-obtain-font-metrics
| 归档时间: |
|
| 查看次数: |
411 次 |
| 最近记录: |