私は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つの新しい問題を抱えています。そのうちの1つは、2つのコマンドが連続して来ることです。これは、大きな問題が発生し、次のコマンドがコマンドであるか、それとも通常の段落であるかを確認できる必要があるためです。私の(l)コマンドは次の段落がコマンドでない場合にのみ機能するため、他の問題にはそのような解決策が必要です。私の2つの問題を解決する方法について何かアイデアはありますか?