The DrawString method can also be used to draw formatted text. To format text, the .NET Framework library provides the StringFormat class, which can be passed as a parameter of the DrawString methods. The StringFormat class provides members to set alignment, line spacing, digit substitution, trimming, and tab stops. These classes are defined in the System.Drawing namespace.
Alignment and Trimming
The Alignment and Trimming properties of the StringFormat class are used to set and get alignment and trimming of text. The Alignment property takes a value of type StringAlignment enumeration, and the Trimming property takes a value of type StringTrimming enumeration.
The LineAlignment property represents the line alignment of text, which also takes a value of type StringAlignment enumeration.
The StringAlignment enumeration specifies how to trim characters from a string that does not completely fit into a layout shape. Table 5.10 describes the members of the StringTrimming enumeration.
Listing 5.9 uses Alignment and Trimming properties to align and trim text strings and draws the text to a form. We use two StringFormat objects:
strFormat1 and strFormat2. For strFormat1, we set the alignment to Center, line alignment to Center, and trimming to EllipsisCharacter. For StrFormat2 we set the alignment to Far, string alignment to Near, and Trimming to Character. Then we use strFormat1 and strFormat2 as parameters of the DrawString method to apply a string format to the text.
TABLE 5.9: StringAlignment members
Member
|
Description
|
Center
|
Text is aligned in the center of a rectangle.
|
Far
|
Text is aligned as far as possible from the origin position of a rectangle.
|
Near
|
Text is aligned as close as possible to the origin position of a rectangle.
|
TABLE 5.10: StringTrimming members
Member
|
Description
|
Character
|
Text is trimmed to the nearest character.
|
EllipsisCharacter
|
Text is trimmed to the nearest character, and an ellipsis is inserted at the end of a trimmed line.
|
EllipsisPath
|
The center is removed from trimmed lines and replaced by an ellipsis.
|
EllipsisWord
|
Text is trimmed to the nearest word, and an ellipsis is inserted at the end of a trimmed line.
|
None
|
No trimming.
|
Word
|
Text is trimmed to the nearest word.
|
LISTING 5.9: Using the Trimming and Alignment properties of StringFormat
Imports System
Imports System.Collections.Generic
Imports System.ComponentModel
Imports System.Data
Imports System.Drawing
Imports System.Linq
Imports System.IO
Imports System.Text
Imports System.Windows.Forms
Public Class Form1
Private Sub Form1_Paint(ByVal sender As System.Object, ByVal e As System.Windows.Forms.PaintEventArgs) Handles MyBase.Paint
'Create a Graphics object
Dim g As Graphics = Me.CreateGraphics()
g.Clear(Me.BackColor)
Dim text As String = "Testing GDI+ Text and Font" & "functionality for alignment and trimming."
'Create font families
Dim arialFamily As New FontFamily("Arial")
'Construct font objects
Dim VerdanaFont As New Font("Verdana", 10, FontStyle.Bold)
Dim arialFont As New Font(arialFamily, 16)
'Create rectangles
Dim rect1 As New Rectangle(10, 10, 100, 150)
Dim rect2 As New Rectangle(10, 165, 150, 100)
'Construct string format and alignment
Dim strFormat1 As New StringFormat()
Dim strFormat2 As New StringFormat()
'Set alignment, line alignment, and trimming properties of a string
strFormat1.Alignment = StringAlignment.Center
strFormat1.LineAlignment = StringAlignment.Center
strFormat1.Trimming = StringTrimming.EllipsisCharacter
strFormat2.Alignment = StringAlignment.Far
strFormat2.LineAlignment = StringAlignment.Near
strFormat2.Trimming = StringTrimming.Character
'Draw GDI+ objects
g.FillEllipse(New SolidBrush(Color.Blue), rect1)
g.DrawRectangle(New Pen(Color.Black), rect2)
g.DrawString(text, VerdanaFont, New SolidBrush(Color.White), rect1, strFormat1)
g.DrawString(text, arialFont, New SolidBrush(Color.Red), rect2, strFormat2)
'Disposes of objects
arialFont.Dispose()
VerdanaFont.Dispose()
arialFamily.Dispose()
g.Dispose()
End Sub
End Class
FIGURE 5.14: Alignment and trimming options
Figure 5.14 shows the output from Listing 5.9. Text inside the rectangle is trimmed to fit.
Conclusion
Hope the article would have helped you in understanding Drawing Formatted Text in GDI+. Read other articles on GDI+ on the website.