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

时间:2013-04-04 13:24:54

标签: c# .net gdi ownerdrawn

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

我的代码是这样的:

GraphicsPath gp = new GraphicsPath();

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

g.DrawPath(pen, gp);

1 个答案:

答案 0 :(得分:2)

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

  

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

     

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

     

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

     

总是将MeasureString和DrawString传递给基于印刷> StringFormat(GenericTypographic)的StringFormat。   将Graphics TextRenderingHint设置为TextRenderingHintAntiAlias。该渲染方法>使用抗锯齿和子像素字形定位来避免对网格拟合的需要,并且因此>固有地与分辨率无关。

所以看起来你应该能够使用正确的StringFormat修复它。