VB.Net by API/System.Drawing/Region
Содержание
Region.Complement
<source lang="vbnet"> Imports System Imports System.ruponentModel Imports System.Windows.Forms Imports System.Data Imports System.Configuration Imports System.Drawing Imports System.Drawing.Drawing2D Imports System.Drawing.Text Imports System.Globalization Imports System.Text Imports System.Collections Public Class MainClass
Shared Sub Main() Dim myform As Form = New CombinationsForm() Application.Run(myform) End Sub
End Class Public Class CombinationsForm
Inherits System.Windows.Forms.Form Public Sub New() MyBase.New() Me.AutoScaleBaseSize = New System.Drawing.Size(5, 13) Me.ClientSize = New System.Drawing.Size(244, 118) Me.Text = "CombinationsForm" End Sub Private Sub CombinationsForm_Paint(ByVal sender As Object, ByVal e As System.Windows.Forms.PaintEventArgs) Handles MyBase.Paint Dim g As Graphics = e.Graphics Dim width As Single = Me.ClientSize.Width Dim height As Single = Me.ClientSize.Height Dim rect As RectangleF = New RectangleF(0, 0, width, height) Dim format As StringFormat = New StringFormat() format.Alignment = StringAlignment.Center format.LineAlignment = StringAlignment.Center Dim path1 As GraphicsPath = New GraphicsPath() Dim path2 As GraphicsPath = New GraphicsPath() Dim path1Rect As RectangleF = New RectangleF(0, 0, width * 2.0F / 3.0F, height) Dim path2rect As RectangleF = path1Rect path2rect.Offset(width * 1.0F / 3.0F, 0) path1.AddEllipse(path1Rect) path2.AddEllipse(path2rect) Dim region As Region = New Region(path1) region.ruplement(path2) g.FillRegion(Brushes.Red, region) g.DrawString("Complement", Me.Font, Brushes.Black, rect, format) g.DrawRectangle(Pens.Black, rect.X, rect.Y, rect.Width, rect.Height) g.TranslateTransform(width, 0) End Sub
End Class
</source>
Region.Exclude
<source lang="vbnet"> Imports System.Drawing Imports System.Drawing.Drawing2D Imports System.Windows.Forms public class ClipRegionExclude
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 g As Graphics = Me.CreateGraphics() g.Clear(Me.BackColor) Dim pen As New Pen(Color.Red, 5) Dim brush As New SolidBrush(Color.Red) Dim rect1 As New Rectangle(50, 0, 50, 150) Dim rect2 As New Rectangle(0, 50, 150, 50) Dim [region] As New [Region](rect1) [region].Exclude(rect2) g.FillRegion(brush, [region]) g.Dispose() 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>
Region.GetBounds
<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>
Region.Intersect
<source lang="vbnet"> Imports System.Drawing Imports System.Drawing.Drawing2D Imports System.Windows.Forms public class ClipRegionIntersect
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 g As Graphics = Me.CreateGraphics() g.Clear(Me.BackColor) Dim pen As New Pen(Color.Red, 5) Dim brush As New SolidBrush(Color.Red) Dim rect1 As New Rectangle(50, 0, 50, 150) Dim rect2 As New Rectangle(0, 50, 150, 50) Dim [region] As New [Region](rect1) [region].Intersect(rect2) g.FillRegion(brush, [region]) g.Dispose() 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>
Region.Union
<source lang="vbnet"> Imports System.Drawing Imports System.Drawing.Drawing2D Imports System.Windows.Forms public class ClipRegionUnion
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 g As Graphics = Me.CreateGraphics() g.Clear(Me.BackColor) Dim pen As New Pen(Color.Red, 5) Dim brush As New SolidBrush(Color.Red) Dim rect1 As New Rectangle(50, 0, 50, 150) Dim rect2 As New Rectangle(0, 50, 150, 50) Dim [region] As New [Region](rect1) [region].Union(rect2) g.FillRegion(brush, [region]) g.Dispose() 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>
Region.Xor
<source lang="vbnet"> Imports System.Drawing Imports System.Drawing.Drawing2D Imports System.Windows.Forms public class ClipRegionXor
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 g As Graphics = Me.CreateGraphics() g.Clear(Me.BackColor) Dim pen As New Pen(Color.Red, 5) Dim brush As New SolidBrush(Color.Red) Dim rect1 As New Rectangle(50, 0, 50, 150) Dim rect2 As New Rectangle(0, 50, 150, 50) Dim [region] As New [Region](rect1) [region].Xor(rect2) g.FillRegion(brush, [region]) g.Dispose() 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>