如何在Winforms中以像素为单位测量字符串的精确宽度

如何在Winforms中以像素为单位测量字符串的精确宽度,winforms,textrenderer,Winforms,Textrenderer,我需要测量Winforms中标签控件中字符串的精确像素大小。 我尝试了TextRenderer.MeasureText(文本,字体)和graphics.MeasureString(文本,字体),但没有得到确切的像素宽度 当选中确切的像素宽度时,它是90,但TextRenderer和Graphics给出了不同的值。 有人能帮我吗 请注意文档中的内容(重点): 返回值 类型:系统图纸尺寸 用指定字体在单行上绘制的文本的大小(以像素为单位)。您可以使用一个采用TextFormatFlags参数的Dra

我需要测量Winforms中标签控件中字符串的精确像素大小。 我尝试了TextRenderer.MeasureText(文本,字体)和graphics.MeasureString(文本,字体),但没有得到确切的像素宽度

当选中确切的像素宽度时,它是90,但TextRenderer和Graphics给出了不同的值。 有人能帮我吗


请注意文档中的内容(重点):

返回值
类型:系统图纸尺寸
用指定字体在单行上绘制的文本的大小(以像素为单位)。您可以使用一个采用TextFormatFlags参数的DrawText重载来操纵文本的绘制方式。例如,TextRenderer的默认行为是向绘制文本的边框添加填充,以容纳悬垂图示符。如果需要绘制一行没有这些额外空格的文本,则应使用采用Size和TextFormatFlags参数的DrawText和MeasureText版本。有关示例,请参见MeasureText(IDeviceContext, 一串 字体, 大小, TextFormatFlags)

另外,请注意,文件(再次强调我的):

备注
MeasureString方法设计用于单个字符串,并在字符串前后留出少量额外空间,以允许悬垂图示符。


90是可见的部分。如果您有另一个空格,或者字体本身在
U
之前和
x
之后有一些额外的宽度,该怎么办?文本在U之前和x之后没有任何额外的空格。