c# - Graphics.DrawString 斩波中间词

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

我创建了一个用户控件,它基本上是一个具有一些不错的小功能的按钮。

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

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

所以它可能显示为..

stackov 
erflow

而不是

stackoverflow 

(但字体较小)

我认为应该有一个 StringFormatFlag 允许我指定如何进行自动换行。

我想要自动换行,而不是“字符”换行。

谢谢 丰富。

最佳答案

您可以尝试改用 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

关于c# - Graphics.DrawString 斩波中间词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7084620/

相关文章:

c# - 数据层中的静态变量,通过网络服务

.net - 邮件测试方法

.net - 获取 ClickOnce 文件关联的路径

c - 使用 Win32 API 实现流畅的动画 - 无需控制消息泵

c# - 如何从 IntelliSense 隐藏公共(public)方法

c# - 为什么我来到服务器代码时Dropdownlist SelectedIndex总是0

java - 一个好的初学者图文教程?

qt - 为什么使用 (360 * 16) 而不是仅使用 360 度?

c# - 选择最小和最大 LINQ

.net - 在 Sql Server 中查找列的默认值的最佳方法