C#WinForms文本大小问题(实际上无法理解结果)

C#WinForms文本大小问题(实际上无法理解结果),c#,winforms,graphics,fonts,C#,Winforms,Graphics,Fonts,作为一个更大项目的一部分,我编写了终端模拟器。除了一个问题外,所有的东西都能正常工作。我不理解字体(大小)的值属性和屏幕像素之间的关系 字体 测试与其他单位以及 我可以显示的字符数(两种方法和两种方法都不起作用)。 第一种测量方法(注释)。我测量一个字符串的大小。由于是单间距字体,所有字母的大小都应该相同。测试了两种方法。结果完全一样 问题 它给了我太少的字符数 看起来是这样的: 也许我不明白单位制是如何运作的 感谢您的帮助: 请参阅中的“备注”部分。定义字体属性时,请使用点。单位转换由测量工

作为一个更大项目的一部分,我编写了终端模拟器。除了一个问题外,所有的东西都能正常工作。我不理解字体(大小)的值属性和屏幕像素之间的关系

字体 测试与其他单位以及

我可以显示的字符数(两种方法和两种方法都不起作用)。 第一种测量方法(注释)。我测量一个字符串的大小。由于是单间距字体,所有字母的大小都应该相同。测试了两种方法。结果完全一样

问题 它给了我太少的字符数 看起来是这样的:

也许我不明白单位制是如何运作的

感谢您的帮助:

请参阅中的“备注”部分。定义字体属性时,请使用
点。单位转换由测量工具执行。我假设
tg
这里的意思类似于终端图形,一种从容器上下文派生的图形。但尚不清楚这种图形内容是如何获得的。如果这是
RichTextBox
TextBox
控件,则用于导出特定图形上下文中字符串的像素大小。1点=72 Dpi时的1个像素
->
实际上下文非常相关。格式标志完成了剩下的工作。@OlivierJacot Descombes非常感谢您。我天真地认为等距字体是无字形的:)@Jimi这是我的用户控件。没关系。它有一个设备上下文,与您可以在其上写入/绘制的所有内容一样。同样的考虑。
        TermFont = new Font(FontFamily.GenericMonospace, fsize, GraphicsUnit.Pixel);
        //FontSizef = tg.MeasureString(testString, TermFont);
        //int xchars = (int)(p.Width / FontSizef.Width) + 1;
        //int ychars = (int)(p.Height / FontSizef.Height);
        int xchars = (int)(p.Width / TermFont.Size) + 1;
        int ychars = (int)(p.Height / TermFont.Height);