VB.Net by API/System.Drawing/StringFormat
StringFormat.Alignment
<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>
StringFormat.LineAlignment
<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>
StringFormat.Trimming
<source lang="vbnet"> Imports System.Drawing.Drawing2D Imports System Imports System.Drawing.Text Imports System.Drawing Imports System.Windows.Forms Imports System.Math Public Class MainClass
Shared Sub Main() Dim form1 As Form = New Form1() Application.Run(form1) End Sub
End Class
Public Class Form1
Inherits System.Windows.Forms.Form Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load Me.ResizeRedraw = True End Sub Private Sub Form1_Paint(ByVal sender As Object, ByVal e As System.Windows.Forms.PaintEventArgs) Handles MyBase.Paint Dim txt As String Dim the_font As New Font("Times New Roman", 30, FontStyle.Bold, GraphicsUnit.Pixel) Dim layout_rect As RectangleF e.Graphics.TextRenderingHint = System.Drawing.Text.TextRenderingHint.AntiAliasGridFit layout_rect = New RectangleF(100, 0, 180, 70) txt = "123456789012345678901234567890" Dim string_format As New StringFormat string_format.Trimming = StringTrimming.Character e.Graphics.DrawString(txt, the_font, Brushes.Black, layout_rect, string_format) e.Graphics.DrawRectangle(Pens.Black, Rectangle.Round(layout_rect)) End Sub
End Class
</source>