Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- ' // BootstrapPanel
- ' // 1 Control
- ' // Made by AeroRev9 / Naywyn
- ' // 03/13.
- Option Strict On
- Imports System.Drawing.Text
- Imports System.Drawing.Drawing2D
- Friend Module Helpers
- Public G As Graphics
- Private TargetStringMeasure As SizeF
- Enum MouseState As Byte
- None = 0
- Over = 1
- Down = 2
- End Enum
- Enum RoundingStyle As Byte
- All = 0
- Top = 1
- Bottom = 2
- Left = 3
- Right = 4
- TopRight = 5
- BottomRight = 6
- End Enum
- Public Function ColorFromHex(Hex As String) As Color
- Return Color.FromArgb(CInt(Long.Parse(String.Format("FFFFFFFFFF{0}", Hex.Substring(1)), Globalization.NumberStyles.HexNumber)))
- End Function
- Public Function MiddlePoint(TargetText As String, TargetFont As Font, Rect As Rectangle) As Point
- TargetStringMeasure = G.MeasureString(TargetText, TargetFont)
- Return New Point(CInt(Rect.Width / 2 - TargetStringMeasure.Width / 2), CInt(Rect.Height / 2 - TargetStringMeasure.Height / 2))
- End Function
- Public Function RoundRect(Rect As Rectangle, Rounding As Integer, Optional Style As RoundingStyle = RoundingStyle.All) As GraphicsPath
- Dim GP As New GraphicsPath()
- Dim AW As Integer = Rounding * 2
- GP.StartFigure()
- If Rounding = 0 Then
- GP.AddRectangle(Rect)
- GP.CloseAllFigures()
- Return GP
- End If
- Select Case Style
- Case RoundingStyle.All
- GP.AddArc(New Rectangle(Rect.X, Rect.Y, AW, AW), -180, 90)
- GP.AddArc(New Rectangle(Rect.Width - AW + Rect.X, Rect.Y, AW, AW), -90, 90)
- GP.AddArc(New Rectangle(Rect.Width - AW + Rect.X, Rect.Height - AW + Rect.Y, AW, AW), 0, 90)
- GP.AddArc(New Rectangle(Rect.X, Rect.Height - AW + Rect.Y, AW, AW), 90, 90)
- Case RoundingStyle.Top
- GP.AddArc(New Rectangle(Rect.X, Rect.Y, AW, AW), -180, 90)
- GP.AddArc(New Rectangle(Rect.Width - AW + Rect.X, Rect.Y, AW, AW), -90, 90)
- GP.AddLine(New Point(Rect.X + Rect.Width, Rect.Y + Rect.Height), New Point(Rect.X, Rect.Y + Rect.Height))
- Case RoundingStyle.Bottom
- GP.AddLine(New Point(Rect.X, Rect.Y), New Point(Rect.X + Rect.Width, Rect.Y))
- GP.AddArc(New Rectangle(Rect.Width - AW + Rect.X, Rect.Height - AW + Rect.Y, AW, AW), 0, 90)
- GP.AddArc(New Rectangle(Rect.X, Rect.Height - AW + Rect.Y, AW, AW), 90, 90)
- Case RoundingStyle.Left
- GP.AddArc(New Rectangle(Rect.X, Rect.Y, AW, AW), -180, 90)
- GP.AddLine(New Point(Rect.X + Rect.Width, Rect.Y), New Point(Rect.X + Rect.Width, Rect.Y + Rect.Height))
- GP.AddArc(New Rectangle(Rect.X, Rect.Height - AW + Rect.Y, AW, AW), 90, 90)
- Case RoundingStyle.Right
- GP.AddLine(New Point(Rect.X, Rect.Y + Rect.Height), New Point(Rect.X, Rect.Y))
- GP.AddArc(New Rectangle(Rect.Width - AW + Rect.X, Rect.Y, AW, AW), -90, 90)
- GP.AddArc(New Rectangle(Rect.Width - AW + Rect.X, Rect.Height - AW + Rect.Y, AW, AW), 0, 90)
- Case RoundingStyle.TopRight
- GP.AddLine(New Point(Rect.X, Rect.Y + 1), New Point(Rect.X, Rect.Y))
- GP.AddArc(New Rectangle(Rect.Width - AW + Rect.X, Rect.Y, AW, AW), -90, 90)
- GP.AddLine(New Point(Rect.X + Rect.Width, Rect.Y + Rect.Height - 1), New Point(Rect.X + Rect.Width, Rect.Y + Rect.Height))
- GP.AddLine(New Point(Rect.X + 1, Rect.Y + Rect.Height), New Point(Rect.X, Rect.Y + Rect.Height))
- Case RoundingStyle.BottomRight
- GP.AddLine(New Point(Rect.X, Rect.Y + 1), New Point(Rect.X, Rect.Y))
- GP.AddLine(New Point(Rect.X + Rect.Width - 1, Rect.Y), New Point(Rect.X + Rect.Width, Rect.Y))
- GP.AddArc(New Rectangle(Rect.Width - AW + Rect.X, Rect.Height - AW + Rect.Y, AW, AW), 0, 90)
- GP.AddLine(New Point(Rect.X + 1, Rect.Y + Rect.Height), New Point(Rect.X, Rect.Y + Rect.Height))
- End Select
- GP.CloseAllFigures()
- Return GP
- End Function
- End Module
- Public Class BootstrapPanel
- Inherits GroupBox
- Public Property Scheme As Schemes = Schemes.Classic
- Private SchemeColor As Color = ColorFromHex("#337AB7")
- Private SchemeBorder As Color = ColorFromHex("#337AB7")
- Private SchemeTextColor As Color = ColorFromHex("#FFFFFF")
- Public Enum Schemes As Byte
- Classic = 0
- Green = 1
- Blue = 2
- Yellow = 3
- Red = 4
- End Enum
- Sub New()
- DoubleBuffered = True
- SetStyle(ControlStyles.UserPaint Or ControlStyles.AllPaintingInWmPaint Or ControlStyles.Opaque Or ControlStyles.OptimizedDoubleBuffer, True)
- End Sub
- Protected Overrides Sub OnPaint(e As PaintEventArgs)
- G = e.Graphics
- G.TextRenderingHint = TextRenderingHint.ClearTypeGridFit
- MyBase.OnPaint(e)
- G.Clear(Parent.BackColor)
- Select Case Scheme
- Case Schemes.Classic
- SchemeColor = ColorFromHex("#337AB7")
- SchemeBorder = ColorFromHex("#337AB7")
- SchemeTextColor = ColorFromHex("#FFFFFF")
- Case Schemes.Green
- SchemeColor = ColorFromHex("#DFF0D8")
- SchemeBorder = ColorFromHex("#D6E9C6")
- SchemeTextColor = ColorFromHex("#688460")
- Case Schemes.Blue
- SchemeColor = ColorFromHex("#D9EDF7")
- SchemeBorder = ColorFromHex("#BCE8F1")
- SchemeTextColor = ColorFromHex("#637984")
- Case Schemes.Yellow
- SchemeColor = ColorFromHex("#FCF8E3")
- SchemeBorder = ColorFromHex("#FAEBCC")
- SchemeTextColor = ColorFromHex("#7F7858")
- Case Schemes.Red
- SchemeColor = ColorFromHex("#F2DEDE")
- SchemeBorder = ColorFromHex("#EBCCD1")
- SchemeTextColor = ColorFromHex("#7C5454")
- End Select
- Using Fill As New SolidBrush(SchemeColor), Border As New Pen(SchemeBorder), TextFont As New Font("Segoe UI", 9), TextBrush As New SolidBrush(SchemeTextColor)
- G.FillRectangle(Fill, New Rectangle(1, 1, Width - 1, 30))
- G.SmoothingMode = SmoothingMode.HighQuality
- G.DrawPath(Border, RoundRect(New Rectangle(0, 0, Width - 1, Height - 1), 2))
- G.DrawString(Text, TextFont, TextBrush, New Point(7, 7))
- G.DrawLine(Border, 0, 30, Width, 30)
- End Using
- End Sub
- End Class
Advertisement
Add Comment
Please, Sign In to add comment