我在 xna 工作,我的问题如下。我得到一个文本,其中“ _ __ _ ____ ”的第一次出现应该以某种方式突出显示给用户。这可以通过使这部分的字体更大、突出显示或其他方式来完成,如果有人有一个好主意的话。
public void DrawStringWithStyle(SpriteBatch batch, SpriteFont thisFont, Vector2 pos, string thisText, SpriteFont BoldFont)
{
string[] paragraphs = Regex.Split(thisText, @"\\(c[a-fA-F0-9]{6})|\\(b)|\\(o)|\\(l)");
SpriteFont CurrentFont = font;
float tempPosX = pos.X;
for (int i = 0; i < paragraphs.Length; i++)
{
batch.DrawString(CurrentFont, paragraphs[i], new Vector2(tempPosX, pos.Y), Color.Black);
if (i + 1 < paragraphs.Length)
{
tempPosX += CurrentFont.MeasureString(paragraphs[i]).X;
i++;
switch (char.ToLower(paragraphs[i][0]))
{
case 'o': CurrentFont = font; break;
case 'b': CurrentFont = BoldFont; break;
case 'l':
paragraphs[i+1] = paragraphs[i+1].Insert(0, Environment.NewLine);
tempPosX = pos.X;
break;
}
}
}
}
所以我遇到了两个新问题,你可能会说出来。其中之一是 2 个命令不能连续出现,因为那样会搞砸大事,需要能够检查下一个命令是命令还是正常段落。另一个问题需要一个类似的解决方案,因为我的 (l) 命令仅在以下段落不是命令时才有效。关于如何解决我的 2 个问题的任何想法?