Imは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つのコマンドが大舞台になり、次がコマンドかどうかを確認できる必要があるか、または何らかの理由でその通常の段落が存在するためです。 my(l)コマンドは、次の段落がコマンドでない場合にのみ機能するため、もう1つの問題は非常に似ています。私の2つの問題を解決する方法に関するアイデア?
申し訳ありませんが、私の英語はには十分ではありませんあなたを理解する。行に2つのコマンドを使用できないのはなぜですか?なぜコマンドlに改行を挿入するのですか?私はtempPos.X = pos.Xのようなことは簡単だと思います。 tempPos.Y + = CurrentFont.VerticalLineSpace; – Blau
はい、しばらくしてから、2つのコマンドがすぐ後に来ると、それらの間に ""からなる段落が作成されることが分かりました。 Didntはそれを知っていて、それが問題だったので、それを修正しました。しかし、どうもありがとう – Drakthal
コマンドが開始時に同じ場合は同じですが、なぜそれは問題ですか? Spritebatch.drawstringが、段落が0より大きい場合に> 0を描画するかどうかをチェックすると、コードが簡単になります。 – Blau