Drawing Formatted Text in GDI+ using VB.NET

In this article I will explain about Drawing Formatted Text in GDI+.
  • 4019
 

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.gif
 
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.

Categories

More Articles

© 2020 DotNetHeaven. All rights reserved.