C# Textwidth到TextRenderer.MeasureText

C# Textwidth到TextRenderer.MeasureText,c#,vb6,C#,Vb6,我有一个VB6中的项目,我需要将其转换为C,该项目使用TextWidth方法,我用TextRenderer.MeasureText方法替换了它,但对于相同字体的相同字符串,即使在我将像素转换为twips之后,我也得到了不同的结果,有人知道如何解决这个问题吗? 我在VB6中的代码: Private Sub Form_Load() MsgBox Me.TextWidth("XX") End Sub 产量:210 我的C代码: public int ConvertPi

我有一个VB6中的项目,我需要将其转换为C,该项目使用TextWidth方法,我用TextRenderer.MeasureText方法替换了它,但对于相同字体的相同字符串,即使在我将像素转换为twips之后,我也得到了不同的结果,有人知道如何解决这个问题吗? 我在VB6中的代码:

    Private Sub Form_Load()
      MsgBox Me.TextWidth("XX")
    End Sub
产量:210

我的C代码:

  public int ConvertPixelsToTwips(Graphics source, int pixel)
    {

        return (int)((double)pixel / ((1.0 / 1440.0) * source.DpiX));   
    }


    private void Form1_Load(object sender, EventArgs e)
    {


        int pixel = TextRenderer.MeasureText("XX",this.Font).Width;
        int twips;
        Graphics g = CreateGraphics();
        twips = ConvertPixelsToTwips(g, pixel);
        MessageBox.Show("in twips: " + Convert.ToString(twips) + " in pixel: " + pixel);

    }

输出:in twips:315 in pixel:21

我还要再问一次,因为您似乎非常专注于解决这个转换问题-那么原始代码如何继续使用twips值?因为我几乎可以肯定,代码也会被修改-你是否不只是为了得到正确的像素到twips的转换,而只是为了把twips的值转换回像素?这里回答,