How to check if the line has been broken?

0

I use File.ReadAllText to read the text inside a .txt file.

private void label9_TextChanged(object sender, EventArgs e)
{
    string text = File.ReadAllText($@"{pathname}", Encoding.UTF8);

    if (text.Length) // Como fazer aqui ?
    {

    }    
}

Inside my file .txt has:

Pois diga que irá 
Irá já, Irajá
Pra onde eu só veja você,
Você veja-me só
Marajó, Marajó
Qualquer outro lugar comum, outro lugar qualquer
Guaporé, Guaporé.
Qualquer outro lugar ao sol, outro lugar ao sul.
Céu azul, céu azul.
Onde haja só meu corpo nu
Junto ao seu corpo nu

In the form I have label1 and panel1 . The result of the label:

Pois diga que irá 
Irá já, Irajá
Pra onde eu só veja você,
Você veja-me só
Marajó, Marajó
Qualquer outro lugar comum, outro 
lugar qualquer
Guaporé, Guaporé.
Qualquer outro lugar ao sol, outro 
lugar ao sul.
Céu azul, céu azul.
Onde haja só meu corpo nu
Junto ao seu corpo nu

You can see that the sixth and ninth line was broken automatically, how can I tell if any of these lines have been broken? If yes, narrow down the font.

On the sixth line it should look like this:

Qualquer outro lugar comum, outro lugar qualquer

On the ninth line it should look like this:

Qualquer outro lugar ao sol, outro lugar ao sul

Must comply with file .txt .

    
asked by anonymous 05.12.2017 / 00:19

1 answer

1

Basically you just need to check if the text space will be larger than the width of the label, and as long as it goes, it decreases the font.

For this, you use MeasureString of class Graphics and while , which decreases font while Width of text is greater than label .

Sample code:

private void label1_TextChanged(object sender, EventArgs e)
{
    Graphics g = this.CreateGraphics();
    float p = 14;
    Font f = new Font(((Label)sender).Font.Name, p);
    SizeF s = g.MeasureString(((Label)sender).Text, f);

    while (s.Width >= ((Label)sender).Width - 20)
    {
       p = p - 0.1f;
       f = new Font(((Label)sender).Font.Name, p);
       s = g.MeasureString(((Label)sender).Text, f);
    }

    ((Label)sender).Font = f;
}
  

Result:   

    
05.12.2017 / 01:28