Graphics.DrawString斩断中间词

时间:2011-08-16 20:31:28

标签: c# .net graphics user-controls gdi+

我创建了一个usercontrol,它基本上是一个带有一些不错的小功能的按钮。

其中一个功能是确定文本可能的最大字体大小,同时将文本保留在框内的范围内。

这在大多数情况下都可以正常工作,但有时它会将一个单词切成两半以适应它。

所以它可能会显示为..

stackov 
erflow

而不是

stackoverflow 

(但字体较小)

我认为会有一个StringFormatFlag允许我指定自动换行的方式。

我想要自动换行,但不是'字符'换行。

由于 丰富。

2 个答案:

答案 0 :(得分:3)

您可以尝试使用TextRenderer:

  TextRenderer.DrawText(e.Graphics,
                        "stackoverflow",
                        this.Font,
                        new Rectangle(10, 10, 32, 32),
                        Color.Black,
                        Color.Empty,
                        TextFormatFlags.WordBreak | TextFormatFlags.VerticalCenter | TextFormatFlags.HorizontalCenter);

  TextRenderer.DrawText(e.Graphics,
                        "stack overflow",
                        this.Font,
                        new Rectangle(50, 10, 32, 32),
                        Color.Black,
                        Color.Empty,
                        TextFormatFlags.WordBreak | TextFormatFlags.VerticalCenter | TextFormatFlags.HorizontalCenter);

enter image description here

答案 1 :(得分:-1)

填充StringFormatFlags属性时需要指定StringFormat.FormatFlags。NoWrap。然后使用一个接受StringFormat类的DrawString重载。以下三种方法之一:

DrawString(String,Font,Brush,PointF,StringFormat)

DrawString(String,Font,Brush,RectangleF,StringFormat)

DrawString(String,Font,Brush,Single,Single,StringFormat)