CSharp - C# TextRenderer.MeasureText的像素太宽

我使用TextRendere.MeasureText替代Graphics.MeasureString,因为它允许我指定TextFormatFlags.NoPadding,但返回宽度是几个像素宽,我在使用.Net 4.5.1.这是代码:


Size size = TextRenderer.MeasureText(items[a], new Font("Segoe UI", 12, GraphicsUnit.Pixel), new Size(Width, 15), TextFormatFlags.NoPadding);

如何获得准确的( - 1/2px)文本宽度?

时间:

你需要使用StringFormat GenericTypographic


SizeF stringSize = new SizeF();
stringSize = e.Graphics.MeasureString(items[a], 
 new Font("Segoe UI", 12, GraphicsUnit.Pixel), 
 new SizeF(Width, 15f), 
 StringFormat.GenericTypographic);

引用MSDN:

MeasureString方法旨在与单个字符串一起使用,并包括字符串前后的少量额外空间,以允许重叠标志符号,

如果你打算加大尺寸,我建议使用SizeF。

...