如何实现自动换行?

use*_*322 4 c# xna word-wrap spritefont measurestring

XNA有Spritefont类,它有一个MeasureString方法,可以返回a的宽度和高度string.我试图了解如何创建一个方法,该方法将有效地返回Environment.Newline插入在正确位置的字符串,以便如果适合某个宽度和高度(Rectangle用作参数).

Ali*_* B. 7

我找到了以下代码:XNA - 基本Word包装

public string WrapText(SpriteFont spriteFont, string text, float maxLineWidth)
{
    string[] words = text.Split(' ');
    StringBuilder sb = new StringBuilder();
    float lineWidth = 0f;
    float spaceWidth = spriteFont.MeasureString(" ").X;

    foreach (string word in words)
    {
        Vector2 size = spriteFont.MeasureString(word);

        if (lineWidth + size.X < maxLineWidth)
        {
            sb.Append(word + " ");
            lineWidth += size.X + spaceWidth;
        }
        else
        {
            sb.Append("\n" + word + " ");
            lineWidth = size.X + spaceWidth;
        }
    }

    return sb.ToString();
}
Run Code Online (Sandbox Code Playgroud)