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
Copyright © dotNetHell.it 2002-2025
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5