1

現在、XNA を使用して GUI 用の TextBox を作成しようとしていますが、文字列内のタグ付きテキストをどのように見つけることができるのか疑問に思っていました。
たとえば、次のようなテキストがあります。

Hey there, I was <r>going to</r> the <b>Mall</b> today!

したがって、<r>タグは赤いテキストを表し、<b>タグは青いテキストを表します。
そして、赤いテキストの開始位置と青いテキストの開始位置を正確に知りたいので、それらを別々にレンダリングできます。
それについて何をすべきか、それを行うために何を使用するかについて何か提案はありますか?

前もって感謝します。

4

2 に答える 2

1

2つの方法でこれを行うことをお勧めします

まず、文字列を受け取り、文字列の色のペアのコレクションを返すメソッドを用意します。

struct StringColorPair {
    public string myText;     // the text
    public Color myColor;     // the color of this text
    public int myOffset;      // characters before this part of the string 
                              // (for positioning in the Draw)
}

public List<StringColorPair> ParseColoredText(string text) {
    var list = new List<StringColorPair>();    

    // Use a regex or other string parsing method to pull out the
    // text chunks and their colors and then for each set of those do:
    list.Add(
        new StringColorPair {
            myText = yourParsedSubText,
            myColor = yourParsedColor,
            myOffset = yourParsedOffset }
    );

    return list;
}

次に、次のような描画メソッドが必要になります。

public void Draw(List<StringColorPair> pairs) {
    foreach(var pair in pairs) {
        // Draw the relevant string and color at its needed offset
    }
}
于 2010-07-01T20:11:25.157 に答える
-1

行を解析するだけで、テキストの色プロパティのセットに到達すると、青色にレンダリングされますが、別のレンダリング呼び出しである必要があります。そうしないと、文字列全体が青色に変わります。したがって、タグに遭遇したときに新しい文字列を作成し、color プロパティを設定してその文字列をレンダリングすると、それが機能するはずです。

于 2010-06-20T17:33:53.037 に答える