Bra*_*ith 8 .net c# gdi+ font-size
我试图理解用户选择或指定的字体大小(例如,使用FontDialog)与.NET中Font类报告的em-size 之间的差异,这让我绞尽脑汁.
例如:
using (FontDialog dlg = new FontDialog()) {
if (dlg.ShowDialog() == DialogResult.OK) {
Console.WriteLine("Selected font size: " + dlg.Font.SizeInPoints.ToString("0.##"));
}
}
Run Code Online (Sandbox Code Playgroud)
使用上面的代码,您将得到一些令人困惑的结果:
在对话框中选择11将产生11.25
在对话框中选择12将产生12
在对话框中选择14将产生14.25
在对话框中选择16将产生15.75
无论您选择哪种字体,都会出现此问题.从上面可以看出,差异中没有模式,它似乎在+0.25和-0.25之间随机变化.
我只是通过将字体大小显示为圆整数来解决这个问题,但我发誓我已经看到了允许用户选择小数字体大小的文字处理/ DTP包 - 而且这些包没有显示上述行为与Windows字体对话框交互时.
谁能为此提供合理的解释?是否有最佳实践技术在UI中显示字体大小?当用户想要像"10 .5"这样的小数时,怎么样?
Nic*_*cki 12
考虑这些花絮:
0.75是不幸的!这意味着如果我们允许用户直接选择点,那么理想的渲染将仅绘制逻辑点的一部分.如果我们可以将整个渲染向上或向下捕捉到最近的整个逻辑点,那就太好了.
准备?开始了!
你明白了.
请记住,如果用户更改其逻辑分辨率(96 dpi,120 dpi等),这些数字将会改变