0

テキストが特定の幅で折り返されるポイントで、文字列を配列に分割したい

これが文字列だとします。テキスト幅を 300 にしたい:

I want to split a string into an array at a point where the text wraps for a given width

そして、次のような関数を使用します:

Text.SplitAtWrap(300,Text)

これは私が望む出力です:

(0) I want to split a string into an
(1) array at a point where the text
(2) wraps for a given width

編集:おそらくフォントを考慮する必要があるため、おそらく使用する必要がありますDrawing.Graphics

4

1 に答える 1

1

ここに答えがあります(それに値する人を信用してください)

public List<string> GetSubstrings(string toSplit, int maxLength, Graphics graph, Font font)
{
     List<string> substrings = new List<string>();
     string[] words = toSplit.Split(" ".ToCharArray());
     string oneSub = "";
     foreach (string oneWord in words)
     {
        string temp = oneSub + oneWord + " ";

        if (graph.MeasureString( temp, font).Width > maxLength) 
        {
           substrings.Add(oneSub);
           oneSub = oneWord + " ";
        }
        else
           oneSub = temp;
     }
     substrings.Add(oneSub);
     return substrings;
}

基本的に、入力文字列は構成要素の単語に分割され、各単語はグラフィックス オブジェクトと参照フォントを使用して測定されます。現在の単語と前の単語を足した長さが必要な長さよりも短い場合、その単語は再び結合されます。それ以外の場合は、結果の文字列が文字列のリストに追加され、呼び出し元に返されます。

于 2013-09-08T12:55:49.753 に答える