VB.Net Tutorial/2D Graphics/CharacterRange
Measure Character Range
<source lang="vbnet">Imports System.Drawing Imports System.Drawing.Drawing2D Imports System.Windows.Forms Imports System.Math public class MeasureCharacterRange
public Shared Sub Main Application.Run(New Form1) End Sub
End class public class Form1
Inherits System.Windows.Forms.Form Protected Overrides Sub OnPaint(ByVal e As PaintEventArgs) Dim txt As String = "www.vbex.ru" Dim the_font As New Font("Times New Roman", 50, FontStyle.Bold, GraphicsUnit.Pixel) Dim layout_rect As New RectangleF(0, 0, Me.ClientSize.Width, Me.ClientSize.Height) Dim string_format As New StringFormat string_format.LineAlignment = StringAlignment.Center string_format.Alignment = StringAlignment.Center e.Graphics.TextRenderingHint = System.Drawing.Text.TextRenderingHint.AntiAliasGridFit Dim character_ranges(txt.Length - 1) As CharacterRange For i As Integer = 0 To txt.Length - 1 character_ranges(i) = New CharacterRange(i, 1) Next i string_format.SetMeasurableCharacterRanges(character_ranges) Dim character_regions() As Region = e.Graphics.MeasureCharacterRanges(txt, the_font, layout_rect, string_format) For Each rgn As Region In character_regions Dim character_bounds As RectangleF = rgn.GetBounds(e.Graphics) Dim character_rect As Rectangle = Rectangle.Round(character_bounds) e.Graphics.DrawRectangle(Pens.White, character_rect) Next rgn e.Graphics.DrawString(txt, the_font, Brushes.Black, layout_rect, string_format) End Sub Public Sub New() MyBase.New() Me.AutoScaleBaseSize = New System.Drawing.Size(5, 13) Me.ClientSize = New System.Drawing.Size(292, 273) Me.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen End Sub
End Class</source>