VB.Net Tutorial/2D Graphics/CharacterRange

Материал из VB Эксперт
Перейти к: навигация, поиск

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>