【问题标题】:Converting between WPF font size and "standard" font size在 WPF 字体大小和“标准”字体大小之间转换
【发布时间】:2011-03-27 12:58:20
【问题描述】:

我注意到在 WPF 中,12 磅的默认字体大小大致相当于“普通”应用程序(例如写字板)中的 9 磅,WPF 中的 10 pt 大约是 7 pt 标准,当我尝试匹配WPF 中写字板的默认字体大小为 10 pt,我发现 13 是最接近的。

首先,WPF为什么要使用这么离奇的非标准字体大小,其次,有没有可靠的方法在两者之间进行转换?

我问的原因是我想构建一个“标准”字体大小为 9、10、12、14、16、18、24、36、48 的字体大小菜单,但我很确定我是否使用那些实际值,他们将疯狂地关闭。

【问题讨论】:

    标签: .net wpf font-size


    【解决方案1】:

    如果您要从点转换为 WPF 双精度,另一种转换方法是使用 System.Windows.FontSizeConverter 类:

    double sizeForWpf = (double) new FontSizeConverter().ConvertFrom("10pt");
    

    【讨论】:

      【解决方案2】:

      WPF 使用像素作为font size 的默认单位。 points(可能是你说“标准”字体大小的意思)和像素之间的映射是:1 pt = (96/72) px

      这给了我们一个简单的转换函数:

      public static double PointsToPixels(double points)
      {
          return points*(96.0/72.0);
      }
      

      更多详情请见this question

      【讨论】:

      • 谢谢!这似乎是缺少的关键。我还看到我可以使用“合格的双精度”指定字体大小并将点指定为单位,但是我想知道如何从代码中做到这一点。
      • 值得指出的是,WPF 文档将这些 1/96 英寸像素称为“em 单位”,这与“em”的印刷含义完全不同(与 @987654324 一起使用@)
      • 我很想知道 Windows DPI 是否重要,所以我深入研究了 .Net 参考源,但事实并非如此。 FontSizeConverter 使用 LengthConverter 将字符串从字符串转换为双精度,并且具有以下数组: static private double[] PixelUnitFactors = { 1.0, // 像素本身 96.0, // 每英寸像素 96.0 / 2.54, // 每厘米像素96.0 / 72.0, // 每点像素数 };
      猜你喜欢
      • 2015-03-17
      • 2016-10-23
      • 1970-01-01
      • 2020-05-17
      • 2010-10-27
      • 2014-03-03
      • 2011-12-04
      • 1970-01-01
      • 2012-05-07
      相关资源
      最近更新 更多