VB.Net by API/System.Drawing/StringAlignment
StringAlignment.Center
<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>
StringAlignment.LineAlignment
<source lang="vbnet"> Imports System Imports System.Collections Imports System.ruponentModel Imports System.Windows.Forms Imports System.Data Imports System.Configuration Imports System.Resources Imports System.Drawing Imports System.Drawing.Drawing2D Imports System.Drawing.Imaging Public Class MainClass
Shared Sub Main() Dim myform As Form = New Form1() Application.Run(myform) End Sub
End Class Public Class Form1
Inherits System.Windows.Forms.Form Public Sub New() MyBase.New()
"Add any initialization after the InitializeComponent() call Me.SetStyle(ControlStyles.ResizeRedraw, True) Me.SetStyle(ControlStyles.DoubleBuffer, True) Me.SetStyle(ControlStyles.AllPaintingInWmPaint, True) End Sub Private Function GetClosedBezierPath(ByVal rect As Rectangle, ByVal points As Point()) As GraphicsPath Dim path As GraphicsPath = New GraphicsPath() path.AddBeziers(points) path.CloseFigure() Return path End Function Private Sub Form1_Paint(ByVal sender As Object, ByVal e As PaintEventArgs) Handles MyBase.Paint Dim g As Graphics = e.Graphics Dim width As Integer = Me.ClientRectangle.Width Dim height As Integer = Me.ClientRectangle.Height Dim rect As Rectangle = New Rectangle(10, 10, width - 20, height - 20) Dim format As StringFormat = New StringFormat() format.Alignment = StringAlignment.Center format.LineAlignment = StringAlignment.Center Dim path As GraphicsPath = GetClosedBezierPath(rect, New Point() {New Point(25, height - 25), New Point(width - 25, height - 25), New Point(25, 25), New Point(width - 25, 25)}) g.FillPath(Brushes.Yellow, path) g.DrawPath(Pens.Black, path) End Sub
End Class
</source>