Option Strict On Imports System.Drawing.Drawing2D ' ' --------------------Unique Theme-------------------- ' Creator - SaketSaket (HF) ' UID - 1869668 ' Inspiration & Credits to all Theme creaters of HF ' Version - 1.0 ' Date Created - 1st August 2014 ' Date Modified - 4th August 2014 ' ' 'Special Thanks to Aeonhack for RoundRect Functions... 'Theme container inspiration taken from Mephobia's Perplex Theme ' ' ' For bugs & Constructive Criticism contact me on HF ' If you like it & want to donate then pm me on HF ' --------------------Unique Theme-------------------- ' 'Please Leave Credits in Source, Do not redistribute Enum MouseState As Byte None = 0 Over = 1 Down = 2 End Enum Module Draw 'Special Thanks to Aeonhack for RoundRect Functions... ;) Public Function RoundRect(ByVal rectangle As Rectangle, ByVal curve As Integer) As GraphicsPath Dim p As GraphicsPath = New GraphicsPath() Dim arcRectangleWidth As Integer = curve * 2 p.AddArc(New Rectangle(rectangle.X, rectangle.Y, arcRectangleWidth, arcRectangleWidth), -180, 90) p.AddArc(New Rectangle(rectangle.Width - arcRectangleWidth + rectangle.X, rectangle.Y, arcRectangleWidth, arcRectangleWidth), -90, 90) p.AddArc(New Rectangle(rectangle.Width - arcRectangleWidth + rectangle.X, rectangle.Height - arcRectangleWidth + rectangle.Y, arcRectangleWidth, arcRectangleWidth), 0, 90) p.AddArc(New Rectangle(rectangle.X, rectangle.Height - arcRectangleWidth + rectangle.Y, arcRectangleWidth, arcRectangleWidth), 90, 90) p.AddLine(New Point(rectangle.X, rectangle.Height - arcRectangleWidth + rectangle.Y), New Point(rectangle.X, curve + rectangle.Y)) Return p End Function Public Function RoundRect(ByVal x As Integer, ByVal y As Integer, ByVal width As Integer, ByVal height As Integer, ByVal curve As Integer) As GraphicsPath Dim rectangle As Rectangle = New Rectangle(x, y, width, height) Dim p As GraphicsPath = New GraphicsPath() Dim arcRectangleWidth As Integer = curve * 2 p.AddArc(New Rectangle(rectangle.X, rectangle.Y, arcRectangleWidth, arcRectangleWidth), -180, 90) p.AddArc(New Rectangle(rectangle.Width - arcRectangleWidth + rectangle.X, rectangle.Y, arcRectangleWidth, arcRectangleWidth), -90, 90) p.AddArc(New Rectangle(rectangle.Width - arcRectangleWidth + rectangle.X, rectangle.Height - arcRectangleWidth + rectangle.Y, arcRectangleWidth, arcRectangleWidth), 0, 90) p.AddArc(New Rectangle(rectangle.X, rectangle.Height - arcRectangleWidth + rectangle.Y, arcRectangleWidth, arcRectangleWidth), 90, 90) p.AddLine(New Point(rectangle.X, rectangle.Height - arcRectangleWidth + rectangle.Y), New Point(rectangle.X, curve + rectangle.Y)) Return p End Function End Module Public Class UniqueTheme : Inherits ContainerControl Dim WithEvents _mytimer As Windows.Forms.Timer Dim _myval As Integer = 0 Private _mousepos As Point = New Point(0, 0) Private _drag As Boolean = False Private _icon As Icon Public Property Icon() As Icon Get Return _icon End Get Set(ByVal value As Icon) _icon = value Invalidate() End Set End Property Protected Overrides Sub OnMouseDown(ByVal e As MouseEventArgs) MyBase.OnMouseDown(e) If e.Button = Windows.Forms.MouseButtons.Left And New Rectangle(55, 1, Width - 180, 35).Contains(e.Location) Then _drag = True : _mousepos = e.Location End If End Sub Protected Overrides Sub OnMouseUp(ByVal e As MouseEventArgs) MyBase.OnMouseUp(e) _drag = False End Sub Protected Overrides Sub OnMouseMove(ByVal e As MouseEventArgs) MyBase.OnMouseMove(e) If _drag Then Parent.Location = New Point(MousePosition.X - _mousepos.X, MousePosition.Y - _mousepos.Y) End If End Sub Protected Overrides Sub OnResize(ByVal e As EventArgs) MyBase.OnResize(e) Invalidate() End Sub Sub New() MyBase.New() SetStyle(ControlStyles.UserPaint Or ControlStyles.ResizeRedraw Or ControlStyles.SupportsTransparentBackColor, True) BackColor = Color.FromArgb(32, 32, 32) DoubleBuffered = True _mytimer = New Timer() _mytimer.Interval = 1000 End Sub Protected Overrides Sub OnCreateControl() MyBase.OnCreateControl() ParentForm.FormBorderStyle = FormBorderStyle.None ParentForm.TransparencyKey = Color.Fuchsia Dock = DockStyle.Fill End Sub Protected Overrides Sub OnPaint(ByVal e As PaintEventArgs) Dim b As Bitmap = New Bitmap(Width, Height) Dim g As Graphics = Graphics.FromImage(b) Dim outerrect As Rectangle = New Rectangle(7, 18, Width - 15, Height - 19) Dim innerrect As Rectangle = New Rectangle(11, 22, Width - 23, Height - 27) Dim headleftrecct As Rectangle = New Rectangle(1, 1, 35, 35) Dim headcenterrect As Rectangle = New Rectangle(55, 1, Width - 180, 35) Dim headrightrecct As Rectangle = New Rectangle(Width - 105, 1, 100, 35) MyBase.OnPaint(e) g.Clear(Color.Fuchsia) g.FillPath(New SolidBrush(Color.FromArgb(89, 87, 85)), RoundRect(outerrect, 3)) g.DrawPath(New Pen(Brushes.Black), RoundRect(outerrect, 3)) g.FillPath(New SolidBrush(Color.FromArgb(52, 52, 52)), RoundRect(innerrect, 3)) g.DrawPath(New Pen(Brushes.Black), RoundRect(innerrect, 3)) Dim leftheader As New LinearGradientBrush(headleftrecct, Color.FromArgb(56, 68, 85), Color.FromArgb(41, 42, 46), LinearGradientMode.Vertical) g.FillPath(leftheader, RoundRect(headleftrecct, 4)) g.DrawPath(New Pen(Brushes.Black), RoundRect(headleftrecct, 4)) Dim centerheader As New LinearGradientBrush(headcenterrect, Color.FromArgb(56, 68, 85), Color.FromArgb(41, 42, 46), LinearGradientMode.Vertical) g.FillPath(centerheader, RoundRect(headcenterrect, 4)) g.DrawPath(New Pen(Brushes.Black), RoundRect(headcenterrect, 4)) Dim rightheader As New LinearGradientBrush(headcenterrect, Color.FromArgb(56, 68, 85), Color.FromArgb(41, 42, 46), LinearGradientMode.Vertical) g.FillPath(rightheader, RoundRect(headrightrecct, 4)) g.DrawPath(New Pen(Brushes.Black), RoundRect(headrightrecct, 4)) Try g.DrawIcon(_icon, New Rectangle(6, 6, 26, 26)) Catch : End Try If _myval = 0 Then g.DrawString(Text, New Font("Verdana", 11, FontStyle.Bold), New SolidBrush(Color.FromArgb(180, 180, 180)), headcenterrect, New StringFormat() With {.Alignment = StringAlignment.Center, .LineAlignment = StringAlignment.Center}) ElseIf _myval = 1 Then g.DrawString(Text, New Font("Verdana", 11, FontStyle.Bold), New SolidBrush(Color.FromArgb(255, 255, 255)), headcenterrect, New StringFormat() With {.Alignment = StringAlignment.Center, .LineAlignment = StringAlignment.Center}) End If If Not DesignMode Then _mytimer.Start() e.Graphics.DrawImage(b, New Point(0, 0)) g.Dispose() : b.Dispose() End Sub Private Sub MyTimer_Tick(ByVal sender As Object, ByVal e As EventArgs) Handles _mytimer.Tick If _myval = 0 Then _myval = 1 Else _myval = 0 End If Invalidate() End Sub End Class Public Class UniqueControlBox : Inherits Control Dim _state As MouseState = MouseState.None Dim _x As Integer ReadOnly _minrect As New Rectangle(5, 2, 24, 24) ReadOnly _maxrect As New Rectangle(32, 2, 24, 24) ReadOnly _closerect As New Rectangle(59, 2, 24, 24) Private _minDisable As Boolean = False Public Property MinimumDisable As Boolean Get Return _minDisable End Get Set(value As Boolean) _minDisable = value Invalidate() End Set End Property Private _maxDisable As Boolean = False Public Property MaximumDisable As Boolean Get Return _maxDisable End Get Set(value As Boolean) _maxDisable = value Invalidate() End Set End Property Protected Overrides Sub OnMouseDown(ByVal e As Windows.Forms.MouseEventArgs) MyBase.OnMouseDown(e) If _x > 5 AndAlso _x < 29 Then If MinimumDisable = False Then FindForm.WindowState = FormWindowState.Minimized End If ElseIf _x > 32 AndAlso _x < 56 Then If MaximumDisable = False Then If FindForm.WindowState = FormWindowState.Maximized Then FindForm.WindowState = FormWindowState.Minimized FindForm.WindowState = FormWindowState.Normal Else FindForm.WindowState = FormWindowState.Minimized FindForm.WindowState = FormWindowState.Maximized End If End If ElseIf _x > 59 AndAlso _x < 83 Then FindForm.Close() End If _state = MouseState.Down : Invalidate() End Sub Protected Overrides Sub OnMouseUp(ByVal e As Windows.Forms.MouseEventArgs) MyBase.OnMouseUp(e) _state = MouseState.Over : Invalidate() End Sub Protected Overrides Sub OnMouseEnter(ByVal e As EventArgs) MyBase.OnMouseEnter(e) _state = MouseState.Over : Invalidate() End Sub Protected Overrides Sub OnMouseLeave(ByVal e As EventArgs) MyBase.OnMouseLeave(e) _state = MouseState.None : Invalidate() End Sub Protected Overrides Sub OnMouseMove(ByVal e As Windows.Forms.MouseEventArgs) MyBase.OnMouseMove(e) _x = e.Location.X Invalidate() End Sub Sub New() MyBase.New() SetStyle(ControlStyles.UserPaint Or ControlStyles.ResizeRedraw Or ControlStyles.SupportsTransparentBackColor, True) DoubleBuffered = True BackColor = Color.Transparent Width = 85 Height = 30 Anchor = AnchorStyles.Top Or AnchorStyles.Right End Sub Protected Overrides Sub OnPaint(ByVal e As PaintEventArgs) Dim g As Graphics = e.Graphics MyBase.OnPaint(e) g.SmoothingMode = SmoothingMode.HighQuality Dim minrdefault As New LinearGradientBrush(_minrect, Color.FromArgb(89, 87, 85), Color.FromArgb(52, 52, 52), 90S) g.FillEllipse(minrdefault, _minrect) g.DrawEllipse(Pens.DimGray, _minrect) Dim maxrdefault As New LinearGradientBrush(_maxrect, Color.FromArgb(89, 87, 85), Color.FromArgb(52, 52, 52), 90S) g.FillEllipse(maxrdefault, _maxrect) g.DrawEllipse(Pens.DimGray, _maxrect) Dim crdefault As New LinearGradientBrush(_closerect, Color.FromArgb(89, 87, 85), Color.FromArgb(52, 52, 52), 90S) g.FillEllipse(crdefault, _closerect) g.DrawEllipse(Pens.DimGray, _closerect) Select Case _state Case MouseState.None Dim minrnone As New LinearGradientBrush(_minrect, Color.FromArgb(89, 87, 85), Color.FromArgb(52, 52, 52), 90S) g.FillEllipse(minrnone, _minrect) g.DrawEllipse(Pens.DimGray, _minrect) Dim maxrnone As New LinearGradientBrush(_maxrect, Color.FromArgb(89, 87, 85), Color.FromArgb(52, 52, 52), 90S) g.FillEllipse(maxrnone, _maxrect) g.DrawEllipse(Pens.DimGray, _maxrect) Dim crnone As New LinearGradientBrush(_closerect, Color.FromArgb(89, 87, 85), Color.FromArgb(52, 52, 52), 90S) g.FillEllipse(crnone, _closerect) g.DrawEllipse(Pens.DimGray, _closerect) Case MouseState.Over If _x > 5 AndAlso _x < 29 Then If MinimumDisable = False Then Dim minrover As New LinearGradientBrush(_minrect, Color.FromArgb(109, 107, 105), Color.FromArgb(72, 72, 72), 90S) g.FillEllipse(minrover, _minrect) g.DrawEllipse(Pens.DimGray, _minrect) End If ElseIf _x > 32 AndAlso _x < 56 Then If MaximumDisable = False Then Dim maxrover As New LinearGradientBrush(_maxrect, Color.FromArgb(109, 107, 105), Color.FromArgb(72, 72, 72), 90S) g.FillEllipse(maxrover, _maxrect) g.DrawEllipse(Pens.DimGray, _maxrect) End If ElseIf _x > 59 AndAlso _x < 83 Then Dim crover As New LinearGradientBrush(_closerect, Color.FromArgb(109, 107, 105), Color.FromArgb(72, 72, 72), 90S) g.FillEllipse(crover, _closerect) g.DrawEllipse(Pens.DimGray, _closerect) End If Case Else If MinimumDisable = False Then Dim minrelse As New LinearGradientBrush(_minrect, Color.FromArgb(129, 127, 125), Color.FromArgb(92, 92, 92), 90S) g.FillEllipse(minrelse, _minrect) g.DrawEllipse(Pens.DimGray, _minrect) End If If MaximumDisable = False Then Dim maxrelse As New LinearGradientBrush(_maxrect, Color.FromArgb(129, 127, 125), Color.FromArgb(92, 92, 92), 90S) g.FillEllipse(maxrelse, _maxrect) g.DrawEllipse(Pens.DimGray, _maxrect) End If Dim crelse As New LinearGradientBrush(_closerect, Color.FromArgb(129, 127, 125), Color.FromArgb(92, 92, 92), 90S) g.FillEllipse(crelse, _closerect) g.DrawEllipse(Pens.DimGray, _closerect) End Select End Sub End Class Public Class UniqueRadioButton : Inherits Control Private _check As Boolean Public Property Checked As Boolean Get Return _check End Get Set(value As Boolean) _check = value Invalidate() End Set End Property Sub New() MyBase.New() SetStyle(ControlStyles.UserPaint Or ControlStyles.ResizeRedraw Or ControlStyles.SupportsTransparentBackColor, True) BackColor = Color.Transparent DoubleBuffered = True Size = New Size(180, 25) End Sub Protected Overrides Sub OnTextChanged(ByVal e As EventArgs) MyBase.OnTextChanged(e) Invalidate() End Sub Protected Overrides Sub OnClick(ByVal e As EventArgs) MyBase.OnClick(e) If Not Checked Then Checked = True For Each ctrl As UniqueRadioButton In From ctrl1 In Parent.Controls.OfType(Of UniqueRadioButton)() Where ctrl1.Handle <> Handle Where ctrl1.Enabled ctrl.Checked = False Next End Sub Protected Overrides Sub OnPaint(ByVal e As PaintEventArgs) Dim b As Bitmap = New Bitmap(Width, Height) Dim g As Graphics = Graphics.FromImage(b) MyBase.OnPaint(e) g.SmoothingMode = SmoothingMode.HighQuality g.InterpolationMode = InterpolationMode.HighQualityBicubic g.TextRenderingHint = Drawing.Text.TextRenderingHint.AntiAlias g.Clear(BackColor) g.DrawString(Text, New Font("Verdana", 10, FontStyle.Regular), New SolidBrush(Color.FromArgb(255, 255, 255)), New Rectangle(12, 4, Width, 16), New StringFormat() With {.Alignment = StringAlignment.Center, .LineAlignment = StringAlignment.Center}) Dim selectionrect As Rectangle = New Rectangle(3, 3, 17, 17) g.DrawEllipse(New Pen(Color.FromArgb(152, 152, 152), 2), selectionrect) If Checked Then selectionrect.Inflate(-4, -4) g.DrawEllipse(New Pen(Color.FromArgb(182, 182, 182), 2), selectionrect) Else g.DrawEllipse(New Pen(Color.FromArgb(152, 152, 152)), selectionrect) End If e.Graphics.DrawImage(b, New Point(0, 0)) g.Dispose() : b.Dispose() End Sub End Class Public Class UniqueCheckBox : Inherits Control Private _check As Boolean Public Property Checked As Boolean Get Return _check End Get Set(value As Boolean) _check = value Invalidate() End Set End Property Sub New() MyBase.New() SetStyle(ControlStyles.UserPaint Or ControlStyles.ResizeRedraw Or ControlStyles.SupportsTransparentBackColor, True) BackColor = Color.Transparent DoubleBuffered = True Size = New Size(180, 25) End Sub Protected Overrides Sub OnTextChanged(ByVal e As EventArgs) MyBase.OnTextChanged(e) Invalidate() End Sub Protected Overrides Sub OnClick(ByVal e As EventArgs) MyBase.OnClick(e) If Not Checked Then Checked = True Else Checked = False End Sub Protected Overrides Sub OnPaint(ByVal e As PaintEventArgs) Dim b As Bitmap = New Bitmap(Width, Height) Dim g As Graphics = Graphics.FromImage(b) MyBase.OnPaint(e) g.SmoothingMode = SmoothingMode.HighQuality g.InterpolationMode = InterpolationMode.HighQualityBicubic g.TextRenderingHint = Drawing.Text.TextRenderingHint.AntiAlias g.Clear(BackColor) g.DrawString(Text, New Font("Verdana", 10, FontStyle.Regular), New SolidBrush(Color.FromArgb(255, 255, 255)), New Rectangle(12, 4, Width, 16), New StringFormat() With {.Alignment = StringAlignment.Center, .LineAlignment = StringAlignment.Center}) Dim selectionrect As Rectangle = New Rectangle(3, 3, 17, 17) g.DrawRectangle(New Pen(Color.FromArgb(152, 152, 152), 2), selectionrect) If Checked Then selectionrect.Inflate(-4, -4) g.DrawRectangle(New Pen(Color.FromArgb(182, 182, 182), 2), selectionrect) Else g.DrawRectangle(New Pen(Color.FromArgb(152, 152, 152)), selectionrect) End If e.Graphics.DrawImage(b, New Point(0, 0)) g.Dispose() : b.Dispose() End Sub End Class Public Class UniqueProgressBar : Inherits Control Dim WithEvents _mytimer As Windows.Forms.Timer Dim _myval As Integer = 0 Private _val As Integer Public Property Value() As Integer Get Return _val End Get Set(ByVal v As Integer) If v > _max Then _val = _max ElseIf v < 0 Then _val = 0 Else _val = v End If Invalidate() End Set End Property Private _max As Integer Public Property Maximum() As Integer Get Return _max End Get Set(ByVal v As Integer) If v < 1 Then _max = 1 Else _max = v End If If v < _val Then _val = _max End If Invalidate() End Set End Property Private _showPercentage As Boolean = False Public Property ShowPercentage() As Boolean Get Return _showPercentage End Get Set(ByVal v As Boolean) _showPercentage = v Invalidate() End Set End Property Sub New() MyBase.New() SetStyle(ControlStyles.UserPaint Or ControlStyles.ResizeRedraw Or ControlStyles.SupportsTransparentBackColor, True) BackColor = Color.Transparent Size = New Size(200, 20) DoubleBuffered = True _max = 100 _mytimer = New Timer() _mytimer.Interval = 500 End Sub Protected Overrides Sub OnPaint(e As Windows.Forms.PaintEventArgs) Dim b As Bitmap = New Bitmap(Width, Height) Dim g As Graphics = Graphics.FromImage(b) Dim percent As Integer = CInt((Width - 1) * (_val / _max)) Dim outerrect As Rectangle = New Rectangle(0, 0, Width - 1, Height - 1) Dim innerrect As Rectangle = New Rectangle(1, 1, percent - 3, Height - 3) MyBase.OnPaint(e) g.Clear(BackColor) g.SmoothingMode = SmoothingMode.HighQuality g.FillPath(New SolidBrush(Color.FromArgb(129, 127, 125)), RoundRect(outerrect, 3)) If percent <> 0 Then Try If _myval = 0 Then g.FillPath(New SolidBrush(Color.FromArgb(72, 72, 72)), RoundRect(innerrect, 3)) ElseIf _myval = 1 Then g.FillPath(New SolidBrush(Color.FromArgb(62, 62, 62)), RoundRect(innerrect, 3)) End If Catch : End Try End If If Not DesignMode Then _mytimer.Start() If _showPercentage Then g.DrawString(String.Format("{0}%", _val), New Font("Verdana", 10, FontStyle.Regular), Brushes.White, New Rectangle(10, 1, Width - 1, Height - 1), New StringFormat With {.Alignment = StringAlignment.Center, .LineAlignment = StringAlignment.Center}) End If e.Graphics.DrawImage(b, New Point(0, 0)) g.Dispose() : b.Dispose() End Sub Private Sub MyTimer_Tick(ByVal sender As Object, ByVal e As EventArgs) Handles _mytimer.Tick If _myval = 0 Then _myval = 1 Else _myval = 0 End If Invalidate() End Sub End Class Public Class UniquePanel : Inherits ContainerControl Protected Overrides Sub OnResize(ByVal e As EventArgs) MyBase.OnResize(e) Invalidate() End Sub Sub New() MyBase.New() SetStyle(ControlStyles.UserPaint Or ControlStyles.ResizeRedraw Or ControlStyles.SupportsTransparentBackColor, True) BackColor = Color.Transparent DoubleBuffered = True Size = New Size(240, 160) End Sub Protected Overrides Sub OnPaint(ByVal e As PaintEventArgs) Dim b As Bitmap = New Bitmap(Width, Height) Dim g As Graphics = Graphics.FromImage(b) Dim outerrect As Rectangle = New Rectangle(0, 0, Width - 1, Height - 1) Dim innerrect As Rectangle = New Rectangle(3, 3, Width - 7, Height - 7) MyBase.OnPaint(e) g.SmoothingMode = SmoothingMode.HighQuality g.InterpolationMode = InterpolationMode.HighQualityBicubic g.Clear(BackColor) g.FillPath(New SolidBrush(Color.FromArgb(89, 87, 85)), RoundRect(outerrect, 3)) g.DrawPath(New Pen(Brushes.Black), RoundRect(outerrect, 3)) g.FillPath(New SolidBrush(Color.FromArgb(52, 52, 52)), RoundRect(innerrect, 3)) g.DrawPath(New Pen(Brushes.Black), RoundRect(innerrect, 3)) e.Graphics.DrawImage(b, New Point(0, 0)) g.Dispose() : b.Dispose() End Sub End Class Public Class UniqueGroupBox : Inherits ContainerControl Protected Overrides Sub OnResize(ByVal e As EventArgs) MyBase.OnResize(e) Invalidate() End Sub Sub New() MyBase.New() SetStyle(ControlStyles.UserPaint Or ControlStyles.ResizeRedraw Or ControlStyles.SupportsTransparentBackColor, True) BackColor = Color.Transparent DoubleBuffered = True Size = New Size(240, 160) End Sub Protected Overrides Sub OnPaint(ByVal e As PaintEventArgs) Dim b As Bitmap = New Bitmap(Width, Height) Dim g As Graphics = Graphics.FromImage(b) Dim outerrect As Rectangle = New Rectangle(0, 0, Width - 1, Height - 1) Dim innerrect As Rectangle = New Rectangle(3, 3, Width - 7, Height - 7) Dim underlinepen As New Pen(Color.FromArgb(255, 255, 255), 2) MyBase.OnPaint(e) g.SmoothingMode = SmoothingMode.HighQuality g.InterpolationMode = InterpolationMode.HighQualityBicubic g.Clear(BackColor) g.FillPath(New SolidBrush(Color.FromArgb(89, 87, 85)), RoundRect(outerrect, 3)) g.DrawPath(New Pen(Brushes.Black), RoundRect(outerrect, 3)) g.FillPath(New SolidBrush(Color.FromArgb(52, 52, 52)), RoundRect(innerrect, 3)) g.DrawPath(New Pen(Brushes.Black), RoundRect(innerrect, 3)) g.DrawString(Text, New Font("Verdana", 10, FontStyle.Regular), New SolidBrush(Color.FromArgb(255, 255, 255)), New Rectangle(0, 0, Width - 1, 30), New StringFormat() With {.Alignment = StringAlignment.Center, .LineAlignment = StringAlignment.Center}) g.DrawLine(underlinepen, 20, 28, Width - 21, 28) e.Graphics.DrawImage(b, New Point(0, 0)) g.Dispose() : b.Dispose() End Sub End Class Public Class UniqueButton : Inherits Control Dim _state As MouseState Protected Overrides Sub OnMouseDown(ByVal e As MouseEventArgs) MyBase.OnMouseDown(e) _state = MouseState.Down Invalidate() End Sub Protected Overrides Sub OnMouseUp(ByVal e As MouseEventArgs) MyBase.OnMouseUp(e) _state = MouseState.Over Invalidate() End Sub Protected Overrides Sub OnMouseEnter(ByVal e As EventArgs) MyBase.OnMouseEnter(e) _state = MouseState.Over Invalidate() End Sub Protected Overrides Sub OnMouseLeave(ByVal e As EventArgs) MyBase.OnMouseLeave(e) _state = MouseState.None Invalidate() End Sub Sub New() SetStyle(ControlStyles.UserPaint Or ControlStyles.ResizeRedraw Or ControlStyles.SupportsTransparentBackColor, True) BackColor = Color.Transparent DoubleBuffered = True Size = New Size(150, 30) _state = MouseState.None End Sub Protected Overrides Sub OnPaint(ByVal e As PaintEventArgs) Dim b As Bitmap = New Bitmap(Width, Height) Dim g As Graphics = Graphics.FromImage(b) Dim rect As Rectangle = New Rectangle(0, 0, Width - 1, Height - 1) Dim btnfont As New Font("Verdana", 10, FontStyle.Regular) MyBase.OnPaint(e) g.SmoothingMode = SmoothingMode.HighQuality g.InterpolationMode = InterpolationMode.HighQualityBicubic g.TextRenderingHint = Drawing.Text.TextRenderingHint.AntiAlias g.Clear(BackColor) Dim buttonrect As New LinearGradientBrush(rect, Color.FromArgb(56, 68, 85), Color.FromArgb(41, 42, 46), LinearGradientMode.Vertical) g.FillPath(buttonrect, RoundRect(rect, 3)) g.DrawPath(New Pen(Brushes.Black), RoundRect(rect, 3)) Select Case _state Case MouseState.None Dim buttonrectnone As New LinearGradientBrush(rect, Color.FromArgb(56, 68, 85), Color.FromArgb(41, 42, 46), LinearGradientMode.Vertical) g.FillPath(buttonrectnone, RoundRect(rect, 3)) g.DrawPath(New Pen(Brushes.Black), RoundRect(rect, 3)) g.DrawString(Text, btnfont, Brushes.White, New Rectangle(0, 0, Width - 1, Height - 1), New StringFormat() With {.Alignment = StringAlignment.Center, .LineAlignment = StringAlignment.Center}) Case MouseState.Down Dim buttonrectdown As New LinearGradientBrush(rect, Color.FromArgb(76, 88, 105), Color.FromArgb(61, 62, 66), LinearGradientMode.Vertical) g.FillPath(buttonrectdown, RoundRect(rect, 3)) g.DrawPath(New Pen(Brushes.Black), RoundRect(rect, 3)) g.DrawString(Text, btnfont, Brushes.White, New Rectangle(0, 0, Width - 1, Height - 1), New StringFormat() With {.Alignment = StringAlignment.Center, .LineAlignment = StringAlignment.Center}) Case MouseState.Over Dim buttonrectover As New LinearGradientBrush(rect, Color.FromArgb(66, 78, 95), Color.FromArgb(51, 52, 56), LinearGradientMode.Vertical) g.FillPath(buttonrectover, RoundRect(rect, 3)) g.DrawPath(New Pen(Brushes.Black), RoundRect(rect, 3)) g.DrawString(Text, btnfont, Brushes.White, New Rectangle(0, 0, Width - 1, Height - 1), New StringFormat() With {.Alignment = StringAlignment.Center, .LineAlignment = StringAlignment.Center}) End Select e.Graphics.DrawImage(b, New Point(0, 0)) g.Dispose() : b.Dispose() End Sub End Class Public Class UniqueTextBox : Inherits Control Dim WithEvents _tb As New TextBox Private _allowpassword As Boolean = False Public Shadows Property UseSystemPasswordChar() As Boolean Get Return _allowpassword End Get Set(ByVal value As Boolean) _tb.UseSystemPasswordChar = UseSystemPasswordChar _allowpassword = value Invalidate() End Set End Property Private _maxChars As Integer = 32767 Public Shadows Property MaxLength() As Integer Get Return _maxChars End Get Set(ByVal value As Integer) _maxChars = value _tb.MaxLength = MaxLength Invalidate() End Set End Property Private _textAlignment As HorizontalAlignment Public Shadows Property TextAlign() As HorizontalAlignment Get Return _textAlignment End Get Set(ByVal value As HorizontalAlignment) _textAlignment = value Invalidate() End Set End Property Private _multiLine As Boolean = False Public Shadows Property MultiLine() As Boolean Get Return _multiLine End Get Set(ByVal value As Boolean) _multiLine = value _tb.Multiline = value OnResize(EventArgs.Empty) Invalidate() End Set End Property Private _readOnly As Boolean = False Public Shadows Property [ReadOnly]() As Boolean Get Return _readOnly End Get Set(ByVal value As Boolean) _readOnly = value If _tb IsNot Nothing Then _tb.ReadOnly = value End If End Set End Property Protected Overrides Sub OnTextChanged(ByVal e As EventArgs) MyBase.OnTextChanged(e) Invalidate() End Sub Protected Overrides Sub OnBackColorChanged(ByVal e As EventArgs) MyBase.OnBackColorChanged(e) Invalidate() End Sub Protected Overrides Sub OnForeColorChanged(ByVal e As EventArgs) MyBase.OnForeColorChanged(e) _tb.ForeColor = ForeColor Invalidate() End Sub Protected Overrides Sub OnFontChanged(ByVal e As EventArgs) MyBase.OnFontChanged(e) _tb.Font = Font End Sub Protected Overrides Sub OnGotFocus(ByVal e As EventArgs) MyBase.OnGotFocus(e) _tb.Focus() End Sub Private Sub TextChangeTb() Handles _tb.TextChanged Text = _tb.Text End Sub Private Sub TextChng() Handles MyBase.TextChanged _tb.Text = Text End Sub Public Sub NewTextBox() With _tb .Text = String.Empty .BackColor = Color.FromArgb(52, 52, 52) .ForeColor = ForeColor .TextAlign = HorizontalAlignment.Center .BorderStyle = BorderStyle.None .Location = New Point(3, 3) .Font = New Font("Verdana", 10, FontStyle.Regular) .Size = New Size(Width - 3, Height - 3) .UseSystemPasswordChar = UseSystemPasswordChar End With End Sub Sub New() MyBase.New() NewTextBox() Controls.Add(_tb) SetStyle(ControlStyles.UserPaint Or ControlStyles.SupportsTransparentBackColor, True) DoubleBuffered = True BackColor = Color.FromArgb(52, 52, 52) ForeColor = Color.FromArgb(255, 255, 255) Font = New Font("Verdana", 10, FontStyle.Regular) Size = New Size(150, 30) End Sub Protected Overrides Sub OnPaint(ByVal e As Windows.Forms.PaintEventArgs) Dim b As Bitmap = New Bitmap(Width, Height) Dim g As Graphics = Graphics.FromImage(b) Dim rect As Rectangle = New Rectangle(0, 0, Width - 1, Height - 1) MyBase.OnPaint(e) g.SmoothingMode = SmoothingMode.HighQuality g.InterpolationMode = InterpolationMode.HighQualityBicubic g.TextRenderingHint = Drawing.Text.TextRenderingHint.AntiAlias With _tb .TextAlign = TextAlign .UseSystemPasswordChar = UseSystemPasswordChar End With g.FillPath(New SolidBrush(Color.FromArgb(52, 52, 52)), RoundRect(rect, 3)) g.DrawPath(New Pen(Brushes.Black), RoundRect(rect, 3)) e.Graphics.DrawImage(b, New Point(0, 0)) g.Dispose() : b.Dispose() End Sub Protected Overrides Sub OnResize(e As EventArgs) MyBase.OnResize(e) If Not MultiLine Then Dim tbheight As Integer = _tb.Height _tb.Location = New Point(10, CType(((Height / 2) - (tbheight / 2) - 1), Integer)) _tb.Size = New Size(Width - 20, tbheight) Else _tb.Location = New Point(10, 10) _tb.Size = New Size(Width - 20, Height - 20) End If End Sub End Class Public Class UniqueLabel : Inherits Control Private _border As Boolean = True Public Property Border As Boolean Get Return _border End Get Set(value As Boolean) _border = value Invalidate() End Set End Property Sub New() SetStyle(ControlStyles.UserPaint Or ControlStyles.ResizeRedraw Or ControlStyles.SupportsTransparentBackColor, True) BackColor = Color.Transparent DoubleBuffered = True Size = New Size(150, 30) End Sub Protected Overrides Sub OnPaint(ByVal e As Windows.Forms.PaintEventArgs) Dim b As Bitmap = New Bitmap(Width, Height) Dim g As Graphics = Graphics.FromImage(b) Dim rect As Rectangle = New Rectangle(0, 0, Width - 1, Height - 1) MyBase.OnPaint(e) g.Clear(BackColor) g.SmoothingMode = SmoothingMode.HighQuality g.InterpolationMode = InterpolationMode.HighQualityBicubic g.FillPath(New SolidBrush(Color.FromArgb(52, 52, 52)), RoundRect(rect, 3)) If Border = True Then g.DrawPath(New Pen(Brushes.Black), RoundRect(rect, 3)) End If g.DrawString(Text, New Font("Verdana", 10, FontStyle.Regular), New SolidBrush(Color.FromArgb(255, 255, 255)), rect, New StringFormat() With {.Alignment = StringAlignment.Center, .LineAlignment = StringAlignment.Center}) e.Graphics.DrawImage(b, New Point(0, 0)) g.Dispose() : b.Dispose() End Sub End Class Public Class UniqueTabControl : Inherits TabControl Sub New() SetStyle(ControlStyles.UserPaint Or ControlStyles.ResizeRedraw Or ControlStyles.SupportsTransparentBackColor, True) BackColor = Color.Transparent DoubleBuffered = True ItemSize = New Size(80, 35) End Sub Protected Overrides Sub OnPaint(ByVal e As Windows.Forms.PaintEventArgs) Dim b As Bitmap = New Bitmap(Width, Height) Dim g As Graphics = Graphics.FromImage(b) Dim rect As Rectangle = New Rectangle(0, 0, Width - 1, Height - 1) Try : SelectedTab.BackColor = Color.FromArgb(72, 72, 72) : Catch : End Try MyBase.OnPaint(e) g.Clear(BackColor) g.FillRectangle(New SolidBrush(Color.FromArgb(52, 52, 52)), rect) g.DrawRectangle(New Pen(Brushes.Black), rect) For i = 0 To TabCount - 1 Dim textRectangle As Rectangle = New Rectangle(New Point(GetTabRect(i).Location.X + 5, GetTabRect(i).Location.Y + 1), New Size(GetTabRect(i).Width, GetTabRect(i).Height - 5)) If i = SelectedIndex Then Dim tabrect As Rectangle = New Rectangle(New Point(GetTabRect(i).Location.X + 3, GetTabRect(i).Location.Y + 3), New Size(GetTabRect(i).Width - 6, GetTabRect(i).Height - 9)) Dim buttonrect As New LinearGradientBrush(rect, Color.FromArgb(56, 68, 85), Color.FromArgb(41, 42, 46), 90S) g.FillPath(buttonrect, RoundRect(tabrect, 3)) g.DrawPath(New Pen(Brushes.Black), RoundRect(tabrect, 3)) g.DrawString(TabPages(i).Text, New Font("Verdana", 8, FontStyle.Bold), New SolidBrush(Color.FromArgb(255, 255, 255)), textRectangle, New StringFormat With {.LineAlignment = StringAlignment.Center, .Alignment = StringAlignment.Near}) Else g.DrawString(TabPages(i).Text, New Font("Verdana", 8, FontStyle.Regular), New SolidBrush(Color.FromArgb(255, 255, 255)), textRectangle, New StringFormat With {.LineAlignment = StringAlignment.Center, .Alignment = StringAlignment.Near}) End If Next e.Graphics.DrawImage(b, New Point(0, 0)) g.Dispose() : b.Dispose() End Sub End Class Public Class UniqueToggle : Inherits Control Private _check As Boolean Public Property Checked As Boolean Get Return _check End Get Set(value As Boolean) _check = value Invalidate() End Set End Property Sub New() MyBase.New() SetStyle(ControlStyles.UserPaint Or ControlStyles.ResizeRedraw Or ControlStyles.SupportsTransparentBackColor, True) DoubleBuffered = True BackColor = Color.Transparent Size = New Size(80, 25) End Sub Protected Overrides Sub OnClick(ByVal e As EventArgs) MyBase.OnClick(e) If Not Checked Then Checked = True Else Checked = False End Sub Protected Overrides Sub OnPaint(ByVal e As PaintEventArgs) Dim b As Bitmap = New Bitmap(Width, Height) Dim g As Graphics = Graphics.FromImage(b) Dim rect As Rectangle = New Rectangle(0, 0, Width - 1, Height - 1) MyBase.OnPaint(e) g.Clear(BackColor) g.SmoothingMode = SmoothingMode.HighQuality g.InterpolationMode = InterpolationMode.HighQualityBicubic g.FillPath(New SolidBrush(Color.FromArgb(52, 52, 52)), RoundRect(rect, 3)) g.DrawPath(New Pen(Brushes.Black), RoundRect(rect, 3)) If Checked Then g.FillPath(New SolidBrush(Color.FromArgb(72, 72, 72)), RoundRect(New Rectangle(CInt((Width / 2) - 2), 2, CInt((Width / 2) - 1), Height - 5), 3)) g.DrawString("ON", New Font("Verdana", 10, FontStyle.Bold), New SolidBrush(Color.FromArgb(255, 255, 255)), New Rectangle(0, 5, CInt((Width / 2)), 15), New StringFormat() With {.Alignment = StringAlignment.Center, .LineAlignment = StringAlignment.Center}) g.DrawLine(New Pen(Color.Black), 56, 5, 56, Height - 7) g.DrawLine(New Pen(Color.Black), 58, 3, 58, Height - 5) g.DrawLine(New Pen(Color.Black), 60, 5, 60, Height - 7) Else g.FillPath(New SolidBrush(Color.FromArgb(72, 72, 72)), RoundRect(New Rectangle(2, 2, CInt((Width / 2) - 1), Height - 5), 3)) g.DrawString("OFF", New Font("Verdana", 10, FontStyle.Bold), New SolidBrush(Color.FromArgb(255, 255, 255)), New Rectangle(CInt((Width / 2)), 5, CInt((Width / 2)), 15), New StringFormat() With {.Alignment = StringAlignment.Center, .LineAlignment = StringAlignment.Center}) g.DrawLine(New Pen(Color.Black), 20, 5, 20, Height - 7) g.DrawLine(New Pen(Color.Black), 22, 3, 22, Height - 5) g.DrawLine(New Pen(Color.Black), 24, 5, 24, Height - 7) End If e.Graphics.DrawImage(b, New Point(0, 0)) g.Dispose() : b.Dispose() End Sub End Class Public Class UniqueSeperator : Inherits Control Enum Style Horizontal Verticle End Enum Private _alignment As Style = Style.Horizontal Public Property Alignment As Style Get Return _alignment End Get Set(ByVal value As Style) _alignment = value End Set End Property Private _showInfo As Boolean = False Public Property ShowInfo As Boolean Get Return _showInfo End Get Set(ByVal value As Boolean) _showInfo = value Invalidate() End Set End Property Sub New() SetStyle(ControlStyles.UserPaint Or ControlStyles.ResizeRedraw Or ControlStyles.SupportsTransparentBackColor, True) DoubleBuffered = True BackColor = Color.Transparent Size = New Size(40, 40) End Sub Protected Overrides Sub OnPaint(e As PaintEventArgs) Dim b As Bitmap = New Bitmap(Width, Height) Dim g As Graphics = Graphics.FromImage(b) MyBase.OnPaint(e) g.Clear(BackColor) g.SmoothingMode = SmoothingMode.HighQuality g.InterpolationMode = InterpolationMode.HighQualityBicubic Select Case _alignment Case Style.Horizontal g.DrawLine(New Pen(Color.FromArgb(89, 87, 85)), New Point(20, CType((Height / 2), Integer) - 2), New Point(Width - 20, CType((Height / 2), Integer) - 2)) g.DrawLine(New Pen(Color.FromArgb(89, 87, 85)), New Point(10, CType((Height / 2), Integer) - 1), New Point(Width - 10, CType((Height / 2), Integer) - 1)) g.DrawLine(New Pen(Color.FromArgb(89, 87, 85)), New Point(0, CType((Height / 2), Integer)), New Point(Width, CType((Height / 2), Integer))) g.DrawLine(New Pen(Color.FromArgb(89, 87, 85)), New Point(10, CType((Height / 2), Integer) + 1), New Point(Width - 10, CType((Height / 2), Integer) + 1)) g.DrawLine(New Pen(Color.FromArgb(89, 87, 85)), New Point(20, CType((Height / 2), Integer) + 2), New Point(Width - 20, CType((Height / 2), Integer) + 2)) If ShowInfo = True Then g.DrawString(Text, New Font("Verdana", 10, FontStyle.Regular), New SolidBrush(Color.FromArgb(255, 255, 255)), New Rectangle(0, 0, Width - 1, CType((Height / 2), Integer)), New StringFormat() With {.Alignment = StringAlignment.Center, .LineAlignment = StringAlignment.Center}) End If Case Style.Verticle g.DrawLine(New Pen(Color.FromArgb(89, 87, 85)), New Point(CType((Width / 2), Integer) - 2, 20), New Point(CType((Width / 2), Integer) - 2, Height - 20)) g.DrawLine(New Pen(Color.FromArgb(89, 87, 85)), New Point(CType((Width / 2), Integer) - 1, 10), New Point(CType((Width / 2), Integer) - 1, Height - 10)) g.DrawLine(New Pen(Color.FromArgb(89, 87, 85)), New Point(CType((Width / 2), Integer), 0), New Point(CType((Width / 2), Integer), Height)) g.DrawLine(New Pen(Color.FromArgb(89, 87, 85)), New Point(CType((Width / 2), Integer) + 1, 10), New Point(CType((Width / 2), Integer) + 1, Height - 10)) g.DrawLine(New Pen(Color.FromArgb(89, 87, 85)), New Point(CType((Width / 2), Integer) + 2, 20), New Point(CType((Width / 2), Integer) + 2, Height - 20)) End Select e.Graphics.DrawImage(b, New Point(0, 0)) g.Dispose() : b.Dispose() End Sub End Class Public Class UniqueComboBox : Inherits ComboBox Private _startIndex As Integer = 0 Private Property StartIndex As Integer Get Return _startIndex End Get Set(ByVal value As Integer) _startIndex = value Try SelectedIndex = value Catch End Try Invalidate() End Set End Property Sub ReplaceItem(ByVal sender As System.Object, ByVal e As Windows.Forms.DrawItemEventArgs) Handles Me.DrawItem e.DrawBackground() Try If (e.State And DrawItemState.Selected) = DrawItemState.Selected Then e.Graphics.FillPath(New SolidBrush(Color.FromArgb(52, 52, 52)), RoundRect(New Rectangle(e.Bounds.X, e.Bounds.Y, e.Bounds.Width, e.Bounds.Height), 3)) e.Graphics.DrawPath(New Pen(Brushes.Black), RoundRect(New Rectangle(e.Bounds.X, e.Bounds.Y, e.Bounds.Width, e.Bounds.Height), 3)) Else e.Graphics.FillPath(New SolidBrush(Color.FromArgb(72, 72, 72)), RoundRect(New Rectangle(e.Bounds.X, e.Bounds.Y, e.Bounds.Width, e.Bounds.Height), 3)) e.Graphics.DrawPath(New Pen(Brushes.Black), RoundRect(New Rectangle(e.Bounds.X, e.Bounds.Y, e.Bounds.Width, e.Bounds.Height), 3)) End If e.Graphics.DrawString(GetItemText(Items(e.Index)), e.Font, New SolidBrush(Color.FromArgb(255, 255, 255)), New Rectangle(e.Bounds.X, e.Bounds.Y, e.Bounds.Width, e.Bounds.Height)) Catch End Try End Sub Sub New() MyBase.New() SetStyle(ControlStyles.UserPaint Or ControlStyles.ResizeRedraw Or ControlStyles.SupportsTransparentBackColor, True) DrawMode = Windows.Forms.DrawMode.OwnerDrawFixed BackColor = Color.Transparent DropDownStyle = ComboBoxStyle.DropDownList StartIndex = 0 ItemHeight = 25 DoubleBuffered = True Width = 200 End Sub Protected Overrides Sub OnResize(e As EventArgs) MyBase.OnResize(e) Height = 20 End Sub Protected Overrides Sub OnPaint(ByVal e As PaintEventArgs) Dim b As Bitmap = New Bitmap(Width, Height) Dim g As Graphics = Graphics.FromImage(b) Dim outerrect As Rectangle = New Rectangle(0, 0, Width - 1, Height - 1) Dim innerrect As Rectangle = New Rectangle(2, 2, Width - 5, Height - 5) MyBase.OnPaint(e) g.Clear(BackColor) g.FillPath(New SolidBrush(Color.FromArgb(89, 87, 85)), RoundRect(outerrect, 3)) g.DrawPath(New Pen(Brushes.Black), RoundRect(outerrect, 3)) g.FillPath(New SolidBrush(Color.FromArgb(52, 52, 52)), RoundRect(innerrect, 3)) g.DrawPath(New Pen(Brushes.Black), RoundRect(innerrect, 3)) g.SetClip(RoundRect(innerrect, 3)) g.FillPath(New SolidBrush(Color.FromArgb(52, 52, 52)), RoundRect(innerrect, 3)) g.DrawPath(New Pen(Brushes.Black), RoundRect(innerrect, 3)) g.ResetClip() g.DrawLine(Pens.White, Width - 9, 10, Width - 22, 10) g.DrawLine(Pens.White, Width - 9, 11, Width - 22, 11) g.DrawLine(Pens.White, Width - 9, 15, Width - 22, 15) g.DrawLine(Pens.White, Width - 9, 16, Width - 22, 16) g.DrawLine(Pens.White, Width - 9, 20, Width - 22, 20) g.DrawLine(Pens.White, Width - 9, 21, Width - 22, 21) g.DrawLine(New Pen(Color.FromArgb(255, 255, 255)), New Point(Width - 29, 7), New Point(Width - 29, Height - 7)) g.DrawLine(New Pen(Color.FromArgb(255, 255, 255)), New Point(Width - 30, 7), New Point(Width - 30, Height - 7)) Try g.DrawString(Text, New Font("Verdana", 10, FontStyle.Bold), New SolidBrush(Color.FromArgb(255, 255, 255)), innerrect, New StringFormat() With {.Alignment = StringAlignment.Center, .LineAlignment = StringAlignment.Center}) Catch : End Try e.Graphics.DrawImage(b, New Point(0, 0)) g.Dispose() : b.Dispose() End Sub End Class