SnapPanel: Init
This commit is contained in:
56
Controls.SnapPanel/SnapPanel.vb
Normal file
56
Controls.SnapPanel/SnapPanel.vb
Normal file
@@ -0,0 +1,56 @@
|
||||
Imports System.Drawing
|
||||
Imports System.Windows.Forms
|
||||
Public Class ClassSnapPanel
|
||||
Inherits Panel
|
||||
|
||||
Private _ShowGrid As Boolean = True
|
||||
Private _GridSize As Integer = 16
|
||||
|
||||
Public Property GridSize As Integer
|
||||
Get
|
||||
Return _GridSize
|
||||
End Get
|
||||
Set(value As Integer)
|
||||
_GridSize = value
|
||||
Refresh()
|
||||
End Set
|
||||
End Property
|
||||
|
||||
Public Property ShowGrid As Boolean
|
||||
Get
|
||||
Return _ShowGrid
|
||||
End Get
|
||||
Set(value As Boolean)
|
||||
_ShowGrid = value
|
||||
Refresh()
|
||||
End Set
|
||||
End Property
|
||||
|
||||
Protected Overrides Sub OnControlAdded(e As ControlEventArgs)
|
||||
AddHandler e.Control.LocationChanged, AddressOf AlignToGrid
|
||||
AddHandler e.Control.DragDrop, AddressOf AlignToGrid
|
||||
MyBase.OnControlAdded(e)
|
||||
End Sub
|
||||
|
||||
Protected Overrides Sub OnControlRemoved(e As ControlEventArgs)
|
||||
RemoveHandler e.Control.LocationChanged, AddressOf AlignToGrid
|
||||
RemoveHandler e.Control.DragDrop, AddressOf AlignToGrid
|
||||
MyBase.OnControlRemoved(e)
|
||||
End Sub
|
||||
|
||||
Protected Overrides Sub OnPaint(e As System.Windows.Forms.PaintEventArgs)
|
||||
If _ShowGrid Then
|
||||
ControlPaint.DrawGrid(e.Graphics, ClientRectangle, New Size(_GridSize, _GridSize), BackColor)
|
||||
End If
|
||||
MyBase.OnPaint(e)
|
||||
End Sub
|
||||
|
||||
Private Sub AlignToGrid(sender As Object, e As EventArgs)
|
||||
If _ShowGrid Then
|
||||
Dim item As Control = CType(sender, Control)
|
||||
Dim x As Integer = Math.Round(item.Left / _GridSize) * _GridSize
|
||||
Dim y As Integer = Math.Round(item.Top / _GridSize) * _GridSize
|
||||
item.Location = New Point(x, y)
|
||||
End If
|
||||
End Sub
|
||||
End Class
|
||||
Reference in New Issue
Block a user