我正在使用该GraphicsPath.AddString()
功能,但它会在文本周围留出一点空间来绘制文本。知道如何在没有填充的情况下绘制字符串,只有文本的路径吗?
我的代码是这样的:
GraphicsPath gp = new GraphicsPath();
gp.AddString(text, font.FontFamily, (int)font.Style, font.Size,
boundsRectangle, format);
g.DrawPath(pen, gp);
我正在使用该GraphicsPath.AddString()
功能,但它会在文本周围留出一点空间来绘制文本。知道如何在没有填充的情况下绘制字符串,只有文本的路径吗?
我的代码是这样的:
GraphicsPath gp = new GraphicsPath();
gp.AddString(text, font.FontFamily, (int)font.Style, font.Size,
boundsRectangle, format);
g.DrawPath(pen, gp);
正在发生的事情是它可能使用 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 来解决这个问题。