使用StringTrimming.EllipsisCharacter时,使用GDI + Graphics.DrawString绘制的文本跳跃1个像素

时间:2014-12-31 08:50:16

标签: winforms gdi+ system.drawing drawstring texttrimming

我正在使用经典的DrawString方法在WinForms应用程序中输出文本。典型的通话看起来像这样:

g.DrawString(text, font, brush, new Rectangle(x, y, width, height), stringFormat);

如果stringFormat.Trimming等于StringTrimming.EllipsisCharacter,如果文本被剪裁并且使用相同左/上/高度的矩形,文本会突然“跳跃”1个像素:

enter image description here

许多标准字体(如MS Sans Serif或Courier New)都会出现这种情况,但Segoe UI等其他标准字体不会发生这种情况。更奇怪的是,如果我们为stringFormat.FormatFlags指定StringFormatFlags.DirectionRightToLeft,我们可以避免这种影响。

这是GDI +的已知问题,是否有解决方法?

P.S。在为.NET 4.0编译的应用程序中,在Win 8.1 Pro 64位中测试了所有这些。

0 个答案:

没有答案