DrawString, taglio stringa e paragrafi

martedì 15 dicembre 2009 - 11.25

volperubbia Profilo | Senior Member

Ciao a tutti,
in VB.NET 2005, quando scrivo del testo con l'oggetto PrintPageEventArgs,
ad esempio con:

Dim StringToPrint As String = "Mia stringa ..."
Dim NormalBrush As New System.Drawing.SolidBrush(System.Drawing.Color.Black)
Dim NormalFont As New System.Drawing.Font("Verdana", 8, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point)
Dim StringSize As System.Drawing.SizeF = e.Graphics.MeasureString(StringToPrint, NormalFont)
e.Graphics.DrawString(StringToPrint, NormalFont, NormalBrush, CurrentLeft, CurrentTop)

... come posso gestire questi due casi:
1) StringToPrint in larghezza va oltre lo spazio disponibile (dovrei quindi tagliare la stringa)
2) StringToPrint è un paragrafo, composto da più linee e eventualmente da allineare (devo usare altri metodi?)

Grazie per l'attenzione,
Davide

Allora ,
ecco due soluzioni alternative per il taglio stringa:

Dim Stringa As String = "Mia stringa ...".Trim
Dim Left As Int16 = 150S
Dim Top As Int16 = 150S
Dim MaxWidth As Int16 = 10S
Dim Font As New System.Drawing.Font("Verdana", 8, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point)
Dim Brush As New System.Drawing.SolidBrush(System.Drawing.Color.Black)
Dim Size As System.Drawing.SizeF = e.Graphics.MeasureString(Stringa, Font)
Dim Rettangolo As New System.Drawing.Rectangle(Left, Top, MaxWidth, System.Convert.ToInt16(Size.Height))

e.Graphics.DrawString(Stringa, Font, Brush, System.Drawing.RectangleF.op_Implicit(Rettangolo), New System.Drawing.StringFormat(Drawing.StringFormatFlags.LineLimit))

oppure

For Cut As Byte = 0 To 255
Size = e.Graphics.MeasureString(Stringa, Font)
If (Size.Width > MaxWidth AndAlso Stringa.Length >= 1S) Then ' TAGLIA
Stringa = Stringa.Substring(0, Stringa.Length - 1S).Trim
Else ' NON TAGLIA, STAMPA ED ESCE
e.Graphics.DrawString(Stringa, Font, Brush, Left, Top)
Exit For
End If
Next Cut

Per quanto riguarda i paragrafi, lavori in corso ...

Davide
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5