As it wasn't any helper i was forced to write my code:
This is my Text struct:
public struct Text
{
public int key;
public string myText;
public int FontSize;
public Rectangle rect;
public Color mycolor;
public string strplaceOfUse;
public bool ShouldItBeShownInThisScreen;
public string wrappedString;
public int HorizontalMargin;
}
This is initialization of my text:
public Text mytext;
mytext.key = 1;
mytext.HorizontalMargin = 50;
mytext.mycolor = Color.Blue;
mytext.rect = new Rectangle((WindowsScreenWidth - 1000) / 2 + mytext.HorizontalMargin, (WindowsScreenHeight - 300) / 2 + 50, 1000 - 1 * mytext.HorizontalMargin, 300);
mytext.strplaceOfUse = "AddNewWords_Word";
mytext.ShouldItBeShownInThisScreen = false;
mytext.myText = "Hello This is a Test and will take time to be practical,so do think about it and make it better and i know you will";
mytext.FontSize = 22;
mytext.wrappedString = WrapText(fncGivemeFont(mytext.FontSize), mytext.myText, mytext.rect.Width);
This is initializing the font
public SpriteFont fncGivemeFont(int fontsize)
{
string BaseDirectory = ".";
SpriteFont myfont=null;
switch (fontsize)
{
case 14:
{
myfont = content.Load<SpriteFont>(BaseDirectory + "\\Font\\myfont14");
break;
}
case 16:
{
myfont = content.Load<SpriteFont>(BaseDirectory + "\\Font\\myfont16");
break;
}
case 18:
{
myfont = content.Load<SpriteFont>(BaseDirectory + "\\Font\\myfont18");
break;
}
case 20:
{
myfont = content.Load<SpriteFont>(BaseDirectory + "\\Font\\myfont20");
break;
}
case 22:
{
myfont = content.Load<SpriteFont>(BaseDirectory + "\\Font\\myfont22");
break;
}
default:
{
myfont = content.Load<SpriteFont>(BaseDirectory + "\\Font\\myfont14");
break;
}
}
return myfont;
}
This is my alignment function:
public static string WrapText(SpriteFont spriteFont, string text, float maxLineWidth)
{
string[] words = text.Split(' ');
StringBuilder sb = new StringBuilder();
float lineWidth = 0f;
float spaceWidth = spriteFont.MeasureString(" ").X;
foreach (string word in words)
{
Vector2 size = spriteFont.MeasureString(word);
if (lineWidth + size.X < maxLineWidth)
{
sb.Append(word + " ");
lineWidth += size.X + spaceWidth;
}
else
{
sb.Append("\n" + word + " ");
lineWidth = size.X + spaceWidth;
}
}
return sb.ToString();
}
My drawing function:
public Text[] myTexts=new Text[1];
myTexts[0] = mytext;
public void DrawTexts(SpriteBatch mybatch)
{
for (int i = 0; i < myTexts.Length; i++)
{
if (myTexts[i].ShouldItBeShownInThisScreen)
{
mybatch.DrawString(fncGivemeFont(myTexts[i].FontSize), myTexts[i].wrappedString,new Vector2(myTexts[i].rect.Left,myTexts[i].rect.Top),myTexts[i].mycolor);
}
}
}