如何在没有填充的情况下绘制字符串

MHM*_*HMr 9 .net c# gdi ownerdrawn

我正在使用该GraphicsPath.AddString()函数,但它在文本周围绘制了一些空格.任何想法如何绘制没有填充的字符串,只有文本的路径?

我的代码是这样的:

GraphicsPath gp = new GraphicsPath();

gp.AddString(text, font.FontFamily, (int)font.Style, font.Size,
    boundsRectangle, format);

g.DrawPath(pen, gp);
Run Code Online (Sandbox Code Playgroud)

par*_*tch 4

正在发生的事情是它可能正在使用 Graphics.MeasureString(),来自文档:

GDI+ 在显示的每个字符串的每一端添加少量 (1/6 em)。此 1/6 em 允许使用具有悬垂末端的字形(例如斜体“f”),并且还为 GDI+ 提供少量余地以帮助网格拟合扩展。

DrawString 的默认操作将在显示相邻运行时对您不利:

首先,默认的 StringFormat 在每个输出的每一端添加额外的 1/6 em;其次,当网格安装宽度小于设计宽度时,允许绳子收缩最多一个em。为了避免这些问题:

始终根据排版 >StringFormat (GenericTypographic) 向 MeasureString 和 DrawString 传递 StringFormat。将图形 TextRenderingHint 设置为 TextRenderingHintAntiAlias。这种渲染方法>使用抗锯齿和子像素字形定位来避免网格拟合的需要,并且>因此本质上与分辨率无关。

所以看起来你应该能够使用正确的 StringFormat 来解决这个问题。