首页 > 解决方案 > 给定 C# 中已知的 DPI,如何计算以毫米为单位的给定字体大小?

问题描述

我需要打印具有非常特定字体大小的标签,但是目标设备的 DPI 不同。有些具有 300 DPI 分辨率,有些具有 600 DPI 等。

由于某种原因,以下两行给出了相同的值:

var f1 = new FormattedText(
    "M",
    CultureInfo.CurrentCulture,
    FlowDirection.LeftToRight,
    new Typeface(TypefaceName),
    12,
    DrawingColor,
    new NumberSubstitution(),
    1);

var f2 = new FormattedText(
    "M",
    CultureInfo.CurrentCulture,
    FlowDirection.LeftToRight,
    new Typeface(TypefaceName),
    12,
    DrawingColor,
    new NumberSubstitution(),
    100);

var h1 = f1.Height;  // = 14.583333333333334
var h2 = f2.Height;  // = 14.583333333333334

无论'值如何,两者h1和都h2给出相同的值。同样,高度是像素吗?HeightFormattedTextpixelsPerDip14.583333333333334

pixelsPerDip如果我设置的任何值都相同,目的是什么Height

我知道我可以使用DPI / 25.4 * y(以毫米为单位的值在哪里)计算一些物理高度,但是在创建实例y时如何计算该值?FormattedText换句话说,我如何创建一个FormattedText实例来打印一些具有非常特定物理高度的文本?

标签: c#

解决方案


推荐阅读