格式化文本在C#中使用XNA
-
27-09-2019 - |
题
目前,我正在试图让一个文本框为我的GUI与XNA,我想知道我怎么能找到一个字符串的标记文本。点击 对于instanceI有这样的文字:点击
Hey there, I was <r>going to</r> the <b>Mall</b> today!
所以<r>
标签将是红色文字和<b>
标签将代表蓝色文本。点击
我想知道确切位置的红色文本开始和蓝色文本开始的位置,所以我可以单独渲染他们。结果
你有什么建议,做些什么什么,以及用于做呢?
预先感谢。
解决方案
好了,你可以只解析线,当你达到设定的文本的颜色属性,以便它现在呈现蓝色,但它必须是一个单独的渲染调用,否则整个字符串会变成蓝色。所以,如果你犯了一个新的字符串,当你临到一个标签,然后设置,那么颜色属性渲染的字符串,它应该工作。
其他提示
我会建议用两种方法做这
首先,有一个可以把你的字符串,返回字符串的颜色对的集合的方法:
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
}
}
不隶属于 StackOverflow