Torna al Thread
Private Sub Form1_Paint(ByVal sender As Object, ByVal e As System.Windows.Forms.PaintEventArgs) Handles Me.Paint
Dim the_string As String = "Lorem ipsum dolor sit amet, consectetur adipisici elit, sed eiusmod tempor incidunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco ..."
Dim the_font As New Font("Times New Roman", 13, FontStyle.Bold)
Dim split_string() As String = Split(the_string, " ")
'Misuro la lunghezza della stringa da stampare
Dim string_size As SizeF = e.Graphics.MeasureString(the_string, the_font)
'Imposto la larghezza massima del rettangolo
Dim rectWidth As Integer = 240
'Verifico che non ci siano parole più lunghe della larghezza del rettangolo.
'In caso affermativo aggiungo una linea
Dim count As Integer = 1
For i As Integer = 0 To UBound(split_string)
Dim string_size_split As SizeF = e.Graphics.MeasureString(split_string(i), the_font)
If string_size_split.Width > rectWidth Then
count += 1
End If
Next
'Calcolo l'altezza del rettangolo
'Dividendo la lunghezza della stringa per la larghezza del rettangolo in pratica ottengo il numero di righe
Dim numLine As Integer = Math.Ceiling((string_size.Width / rectWidth)) + count
'Moltiplico il numero di linee per l'altezza del carattere
Dim rectHeight As Integer = numLine * the_font.Height
Dim layout_rect As New RectangleF(10, 10, rectWidth, rectHeight)
Dim string_format As New StringFormat
string_format.Alignment = StringAlignment.Near
string_format.LineAlignment = StringAlignment.Near
e.Graphics.DrawString(the_string, the_font, Brushes.Black, layout_rect, string_format)
'Questa si può togliere; è solo per verificare
e.Graphics.DrawRectangle(Pens.Black, Rectangle.Round(layout_rect))
End Sub