我正在使用经典的DrawString方法在WinForms应用程序中输出文本。典型的通话看起来像这样:
g.DrawString(text, font, brush, new Rectangle(x, y, width, height), stringFormat);
如果stringFormat.Trimming等于StringTrimming.EllipsisCharacter,如果文本被剪裁并且使用相同左/上/高度的矩形,文本会突然“跳跃”1个像素:
许多标准字体(如MS Sans Serif或Courier New)都会出现这种情况,但Segoe UI等其他标准字体不会发生这种情况。更奇怪的是,如果我们为stringFormat.FormatFlags指定StringFormatFlags.DirectionRightToLeft,我们可以避免这种影响。
这是GDI +的已知问题,是否有解决方法?
P.S。在为.NET 4.0编译的应用程序中,在Win 8.1 Pro 64位中测试了所有这些。