VB.Net by API/System.Drawing/StringAlignment

Материал из VB Эксперт
Версия от 15:49, 26 мая 2010; Admin (обсуждение | вклад) (1 версия)
(разн.) ← Предыдущая | Текущая версия (разн.) | Следующая → (разн.)
Перейти к: навигация, поиск

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>