VB.Net by API/System.Drawing/StringAlignment

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

StringAlignment.Center

  

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


StringAlignment.LineAlignment

  
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