9

我正在使用该GraphicsPath.AddString()功能,但它会在文本周围留出一点空间来绘制文本。知道如何在没有填充的情况下绘制字符串,只有文本的路径吗?

我的代码是这样的:

GraphicsPath gp = new GraphicsPath();

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

g.DrawPath(pen, gp);
4

1 回答 1

2

正在发生的事情是它可能使用 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 来解决这个问题。

于 2013-07-09T14:39:03.713 回答