Imports System.Drawing.Drawing2D Imports System.ComponentModel Imports System.Runtime.InteropServices '.::VibeLander Theme::. 'Author: UnReLaTeDScript 'Credits: Aeonhack [Themebase] 'Version: 1.0 MustInherit Class Theme Inherits ContainerControl #Region " Initialization " Protected G As Graphics Sub New() SetStyle(DirectCast(139270, ControlStyles), True) End Sub Private ParentIsForm As Boolean Protected Overrides Sub OnHandleCreated(ByVal e As EventArgs) Dock = DockStyle.Fill ParentIsForm = TypeOf Parent Is Form If ParentIsForm Then If Not _TransparencyKey = Color.Empty Then ParentForm.TransparencyKey = _TransparencyKey ParentForm.FormBorderStyle = FormBorderStyle.None End If MyBase.OnHandleCreated(e) End Sub Overrides Property Text() As String Get Return MyBase.Text End Get Set(ByVal v As String) MyBase.Text = v Invalidate() End Set End Property #End Region #Region " Sizing and Movement " Private _Resizable As Boolean = True Property Resizable() As Boolean Get Return _Resizable End Get Set(ByVal value As Boolean) _Resizable = value End Set End Property Private _MoveHeight As Integer = 24 Property MoveHeight() As Integer Get Return _MoveHeight End Get Set(ByVal v As Integer) _MoveHeight = v Header = New Rectangle(7, 7, Width - 14, _MoveHeight - 7) End Set End Property Private Flag As IntPtr Protected Overrides Sub OnMouseDown(ByVal e As MouseEventArgs) If Not e.Button = MouseButtons.Left Then Return If ParentIsForm Then If ParentForm.WindowState = FormWindowState.Maximized Then Return If Header.Contains(e.Location) Then Flag = New IntPtr(2) ElseIf Current.Position = 0 Or Not _Resizable Then Return Else Flag = New IntPtr(Current.Position) End If Capture = False DefWndProc(Message.Create(Parent.Handle, 161, Flag, Nothing)) MyBase.OnMouseDown(e) End Sub Private Structure Pointer ReadOnly Cursor As Cursor, Position As Byte Sub New(ByVal c As Cursor, ByVal p As Byte) Cursor = c Position = p End Sub End Structure Private F1, F2, F3, F4 As Boolean, PTC As Point Private Function GetPointer() As Pointer PTC = PointToClient(MousePosition) F1 = PTC.X < 7 F2 = PTC.X > Width - 7 F3 = PTC.Y < 7 F4 = PTC.Y > Height - 7 If F1 And F3 Then Return New Pointer(Cursors.SizeNWSE, 13) If F1 And F4 Then Return New Pointer(Cursors.SizeNESW, 16) If F2 And F3 Then Return New Pointer(Cursors.SizeNESW, 14) If F2 And F4 Then Return New Pointer(Cursors.SizeNWSE, 17) If F1 Then Return New Pointer(Cursors.SizeWE, 10) If F2 Then Return New Pointer(Cursors.SizeWE, 11) If F3 Then Return New Pointer(Cursors.SizeNS, 12) If F4 Then Return New Pointer(Cursors.SizeNS, 15) Return New Pointer(Cursors.Default, 0) End Function Private Current, Pending As Pointer Private Sub SetCurrent() Pending = GetPointer() If Current.Position = Pending.Position Then Return Current = GetPointer() Cursor = Current.Cursor End Sub Protected Overrides Sub OnMouseMove(ByVal e As MouseEventArgs) If _Resizable Then SetCurrent() MyBase.OnMouseMove(e) End Sub Protected Header As Rectangle Protected Overrides Sub OnSizeChanged(ByVal e As EventArgs) If Width = 0 OrElse Height = 0 Then Return Header = New Rectangle(7, 7, Width - 14, _MoveHeight - 7) Invalidate() MyBase.OnSizeChanged(e) End Sub #End Region #Region " Convienence " MustOverride Sub PaintHook() Protected NotOverridable Overrides Sub OnPaint(ByVal e As PaintEventArgs) If Width = 0 OrElse Height = 0 Then Return G = e.Graphics PaintHook() End Sub Private _TransparencyKey As Color Property TransparencyKey() As Color Get Return _TransparencyKey End Get Set(ByVal v As Color) _TransparencyKey = v Invalidate() End Set End Property Private _Image As Image Property Image() As Image Get Return _Image End Get Set(ByVal value As Image) _Image = value Invalidate() End Set End Property ReadOnly Property ImageWidth() As Integer Get If _Image Is Nothing Then Return 0 Return _Image.Width End Get End Property Private _Size As Size Private _Rectangle As Rectangle Private _Gradient As LinearGradientBrush Private _Brush As SolidBrush Protected Sub DrawCorners(ByVal c As Color, ByVal rect As Rectangle) _Brush = New SolidBrush(c) G.FillRectangle(_Brush, rect.X, rect.Y, 1, 1) G.FillRectangle(_Brush, rect.X + (rect.Width - 1), rect.Y, 1, 1) G.FillRectangle(_Brush, rect.X, rect.Y + (rect.Height - 1), 1, 1) G.FillRectangle(_Brush, rect.X + (rect.Width - 1), rect.Y + (rect.Height - 1), 1, 1) End Sub Protected Sub DrawBorders(ByVal p1 As Pen, ByVal p2 As Pen, ByVal rect As Rectangle) G.DrawRectangle(p1, rect.X, rect.Y, rect.Width - 1, rect.Height - 1) G.DrawRectangle(p2, rect.X + 1, rect.Y + 1, rect.Width - 3, rect.Height - 3) End Sub Protected Sub DrawText(ByVal a As HorizontalAlignment, ByVal c As Color, ByVal x As Integer) DrawText(a, c, x, 0) End Sub Protected Sub DrawText(ByVal a As HorizontalAlignment, ByVal c As Color, ByVal x As Integer, ByVal y As Integer) If String.IsNullOrEmpty(Text) Then Return _Size = G.MeasureString(Text, Font).ToSize _Brush = New SolidBrush(c) Select Case a Case HorizontalAlignment.Left G.DrawString(Text, Font, _Brush, x, _MoveHeight \ 2 - _Size.Height \ 2 + y) Case HorizontalAlignment.Right G.DrawString(Text, Font, _Brush, Width - _Size.Width - x, _MoveHeight \ 2 - _Size.Height \ 2 + y) Case HorizontalAlignment.Center G.DrawString(Text, Font, _Brush, Width \ 2 - _Size.Width \ 2 + x, _MoveHeight \ 2 - _Size.Height \ 2 + y) End Select End Sub Protected Sub DrawIcon(ByVal a As HorizontalAlignment, ByVal x As Integer) DrawIcon(a, x, 0) End Sub Protected Sub DrawIcon(ByVal a As HorizontalAlignment, ByVal x As Integer, ByVal y As Integer) If _Image Is Nothing Then Return Select Case a Case HorizontalAlignment.Left G.DrawImage(_Image, x, _MoveHeight \ 2 - _Image.Height \ 2 + y) Case HorizontalAlignment.Right G.DrawImage(_Image, Width - _Image.Width - x, _MoveHeight \ 2 - _Image.Height \ 2 + y) Case HorizontalAlignment.Center G.DrawImage(_Image, Width \ 2 - _Image.Width \ 2, _MoveHeight \ 2 - _Image.Height \ 2) End Select End Sub Protected Sub DrawGradient(ByVal c1 As Color, ByVal c2 As Color, ByVal x As Integer, ByVal y As Integer, ByVal width As Integer, ByVal height As Integer, ByVal angle As Single) _Rectangle = New Rectangle(x, y, width, height) _Gradient = New LinearGradientBrush(_Rectangle, c1, c2, angle) G.FillRectangle(_Gradient, _Rectangle) End Sub #End Region End Class Module Draw 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 MustInherit Class ThemeControl Inherits Control #Region " Initialization " Protected G As Graphics, B As Bitmap Sub New() SetStyle(DirectCast(139270, ControlStyles), True) B = New Bitmap(1, 1) G = Graphics.FromImage(B) End Sub Sub AllowTransparent() SetStyle(ControlStyles.Opaque, False) SetStyle(ControlStyles.SupportsTransparentBackColor, True) End Sub Overrides Property Text() As String Get Return MyBase.Text End Get Set(ByVal v As String) MyBase.Text = v Invalidate() End Set End Property #End Region #Region " Mouse Handling " Protected Enum State As Byte MouseNone = 0 MouseOver = 1 MouseDown = 2 End Enum Protected MouseState As State Protected Overrides Sub OnMouseLeave(ByVal e As EventArgs) ChangeMouseState(State.MouseNone) MyBase.OnMouseLeave(e) End Sub Protected Overrides Sub OnMouseEnter(ByVal e As EventArgs) ChangeMouseState(State.MouseOver) MyBase.OnMouseEnter(e) End Sub Protected Overrides Sub OnMouseUp(ByVal e As MouseEventArgs) ChangeMouseState(State.MouseOver) MyBase.OnMouseUp(e) End Sub Protected Overrides Sub OnMouseDown(ByVal e As MouseEventArgs) If e.Button = MouseButtons.Left Then ChangeMouseState(State.MouseDown) MyBase.OnMouseDown(e) End Sub Private Sub ChangeMouseState(ByVal e As State) MouseState = e Invalidate() End Sub #End Region #Region " Convienence " MustOverride Sub PaintHook() Protected NotOverridable Overrides Sub OnPaint(ByVal e As PaintEventArgs) If Width = 0 OrElse Height = 0 Then Return PaintHook() e.Graphics.DrawImage(B, 0, 0) End Sub Protected Overrides Sub OnSizeChanged(ByVal e As EventArgs) If Not Width = 0 AndAlso Not Height = 0 Then B = New Bitmap(Width, Height) G = Graphics.FromImage(B) Invalidate() End If MyBase.OnSizeChanged(e) End Sub Private _NoRounding As Boolean Property NoRounding() As Boolean Get Return _NoRounding End Get Set(ByVal v As Boolean) _NoRounding = v Invalidate() End Set End Property Private _Image As Image Property Image() As Image Get Return _Image End Get Set(ByVal value As Image) _Image = value Invalidate() End Set End Property ReadOnly Property ImageWidth() As Integer Get If _Image Is Nothing Then Return 0 Return _Image.Width End Get End Property ReadOnly Property ImageTop() As Integer Get If _Image Is Nothing Then Return 0 Return Height \ 2 - _Image.Height \ 2 End Get End Property Private _Size As Size Private _Rectangle As Rectangle Private _Gradient As LinearGradientBrush Private _Brush As SolidBrush Protected Sub DrawCorners(ByVal c As Color, ByVal rect As Rectangle) If _NoRounding Then Return B.SetPixel(rect.X, rect.Y, c) B.SetPixel(rect.X + (rect.Width - 1), rect.Y, c) B.SetPixel(rect.X, rect.Y + (rect.Height - 1), c) B.SetPixel(rect.X + (rect.Width - 1), rect.Y + (rect.Height - 1), c) End Sub Protected Sub DrawBorders(ByVal p1 As Pen, ByVal p2 As Pen, ByVal rect As Rectangle) G.DrawRectangle(p1, rect.X, rect.Y, rect.Width - 1, rect.Height - 1) G.DrawRectangle(p2, rect.X + 1, rect.Y + 1, rect.Width - 3, rect.Height - 3) End Sub Protected Sub DrawText(ByVal a As HorizontalAlignment, ByVal c As Color, ByVal x As Integer) DrawText(a, c, x, 0) End Sub Protected Sub DrawText(ByVal a As HorizontalAlignment, ByVal c As Color, ByVal x As Integer, ByVal y As Integer) If String.IsNullOrEmpty(Text) Then Return _Size = G.MeasureString(Text, Font).ToSize _Brush = New SolidBrush(c) Select Case a Case HorizontalAlignment.Left G.DrawString(Text, Font, _Brush, x, Height \ 2 - _Size.Height \ 2 + y) Case HorizontalAlignment.Right G.DrawString(Text, Font, _Brush, Width - _Size.Width - x, Height \ 2 - _Size.Height \ 2 + y) Case HorizontalAlignment.Center G.DrawString(Text, Font, _Brush, Width \ 2 - _Size.Width \ 2 + x, Height \ 2 - _Size.Height \ 2 + y) End Select End Sub Protected Sub DrawIcon(ByVal a As HorizontalAlignment, ByVal x As Integer) DrawIcon(a, x, 0) End Sub Protected Sub DrawIcon(ByVal a As HorizontalAlignment, ByVal x As Integer, ByVal y As Integer) If _Image Is Nothing Then Return Select Case a Case HorizontalAlignment.Left G.DrawImage(_Image, x, Height \ 2 - _Image.Height \ 2 + y) Case HorizontalAlignment.Right G.DrawImage(_Image, Width - _Image.Width - x, Height \ 2 - _Image.Height \ 2 + y) Case HorizontalAlignment.Center G.DrawImage(_Image, Width \ 2 - _Image.Width \ 2, Height \ 2 - _Image.Height \ 2) End Select End Sub Protected Sub DrawGradient(ByVal c1 As Color, ByVal c2 As Color, ByVal x As Integer, ByVal y As Integer, ByVal width As Integer, ByVal height As Integer, ByVal angle As Single) _Rectangle = New Rectangle(x, y, width, height) _Gradient = New LinearGradientBrush(_Rectangle, c1, c2, angle) G.FillRectangle(_Gradient, _Rectangle) End Sub #End Region End Class MustInherit Class ThemeContainerControl Inherits ContainerControl #Region " Initialization " Protected G As Graphics, B As Bitmap Sub New() SetStyle(DirectCast(139270, ControlStyles), True) B = New Bitmap(1, 1) G = Graphics.FromImage(B) End Sub Sub AllowTransparent() SetStyle(ControlStyles.Opaque, False) SetStyle(ControlStyles.SupportsTransparentBackColor, True) End Sub #End Region #Region " Convienence " MustOverride Sub PaintHook() Protected NotOverridable Overrides Sub OnPaint(ByVal e As PaintEventArgs) If Width = 0 OrElse Height = 0 Then Return PaintHook() e.Graphics.DrawImage(B, 0, 0) End Sub Protected Overrides Sub OnSizeChanged(ByVal e As EventArgs) If Not Width = 0 AndAlso Not Height = 0 Then B = New Bitmap(Width, Height) G = Graphics.FromImage(B) Invalidate() End If MyBase.OnSizeChanged(e) End Sub Private _NoRounding As Boolean Property NoRounding() As Boolean Get Return _NoRounding End Get Set(ByVal v As Boolean) _NoRounding = v Invalidate() End Set End Property Private _Rectangle As Rectangle Private _Gradient As LinearGradientBrush Protected Sub DrawCorners(ByVal c As Color, ByVal rect As Rectangle) If _NoRounding Then Return B.SetPixel(rect.X, rect.Y, c) B.SetPixel(rect.X + (rect.Width - 1), rect.Y, c) B.SetPixel(rect.X, rect.Y + (rect.Height - 1), c) B.SetPixel(rect.X + (rect.Width - 1), rect.Y + (rect.Height - 1), c) End Sub Protected Sub DrawBorders(ByVal p1 As Pen, ByVal p2 As Pen, ByVal rect As Rectangle) G.DrawRectangle(p1, rect.X, rect.Y, rect.Width - 1, rect.Height - 1) G.DrawRectangle(p2, rect.X + 1, rect.Y + 1, rect.Width - 3, rect.Height - 3) End Sub Protected Sub DrawGradient(ByVal c1 As Color, ByVal c2 As Color, ByVal x As Integer, ByVal y As Integer, ByVal width As Integer, ByVal height As Integer, ByVal angle As Single) _Rectangle = New Rectangle(x, y, width, height) _Gradient = New LinearGradientBrush(_Rectangle, c1, c2, angle) G.FillRectangle(_Gradient, _Rectangle) End Sub #End Region End Class Class TxtBox Inherits ThemeControl Dim WithEvents txtbox As New TextBox #Region "lol" Private _passmask As Boolean = False Public Shadows Property UseSystemPasswordChar() As Boolean Get Return _passmask End Get Set(ByVal v As Boolean) txtbox.UseSystemPasswordChar = UseSystemPasswordChar _passmask = v Invalidate() End Set End Property Private _maxchars As Integer = 32767 Public Shadows Property MaxLength() As Integer Get Return _maxchars End Get Set(ByVal v As Integer) _maxchars = v txtbox.MaxLength = MaxLength Invalidate() End Set End Property Private _align As HorizontalAlignment Public Shadows Property TextAlignment() As HorizontalAlignment Get Return _align End Get Set(ByVal v As HorizontalAlignment) _align = v Invalidate() End Set End Property Protected Overrides Sub OnPaintBackground(ByVal pevent As System.Windows.Forms.PaintEventArgs) End Sub Protected Overrides Sub OnTextChanged(ByVal e As System.EventArgs) MyBase.OnTextChanged(e) Invalidate() End Sub Protected Overrides Sub OnBackColorChanged(ByVal e As System.EventArgs) MyBase.OnBackColorChanged(e) txtbox.BackColor = BackColor Invalidate() End Sub Protected Overrides Sub OnForeColorChanged(ByVal e As System.EventArgs) MyBase.OnForeColorChanged(e) txtbox.ForeColor = ForeColor Invalidate() End Sub Protected Overrides Sub OnFontChanged(ByVal e As System.EventArgs) MyBase.OnFontChanged(e) txtbox.Font = Font End Sub Protected Overrides Sub OnGotFocus(ByVal e As System.EventArgs) MyBase.OnGotFocus(e) txtbox.Focus() End Sub Sub TextChngTxtBox() Handles txtbox.TextChanged Text = txtbox.Text End Sub Sub TextChng() Handles MyBase.TextChanged txtbox.Text = Text End Sub #End Region Protected Overrides Sub WndProc(ByRef m As Message) Select Case m.Msg Case 15 Invalidate() MyBase.WndProc(m) Me.PaintHook() Exit Select Case Else MyBase.WndProc(m) Exit Select End Select End Sub Sub New() MyBase.New() Controls.Add(txtbox) With txtbox .Multiline = False .BackColor = Color.FromArgb(0, 0, 0) .ForeColor = ForeColor .Text = String.Empty .TextAlign = HorizontalAlignment.Center .BorderStyle = BorderStyle.None .Location = New Point(5, 8) .Font = New Font("Arial", 8.25F, FontStyle.Bold) .Size = New Size(Width - 8, Height - 11) .UseSystemPasswordChar = UseSystemPasswordChar End With Text = "" DoubleBuffered = True End Sub Overrides Sub PaintHook() Me.BackColor = Color.White G.Clear(Parent.BackColor) Dim p As New Pen(Color.FromArgb(204, 204, 204), 1) Dim o As New Pen(Color.FromArgb(252, 252, 252), 7) G.FillPath(Brushes.White, Draw.RoundRect(New Rectangle(0, 0, Width - 1, Height - 1), 2)) G.DrawPath(o, Draw.RoundRect(New Rectangle(0, 0, Width - 1, Height - 1), 2)) G.DrawPath(p, Draw.RoundRect(New Rectangle(0, 0, Width - 1, Height - 1), 2)) Height = txtbox.Height + 16 Dim drawFont As New Font("Tahoma", 9, FontStyle.Regular) With txtbox .Width = Width - 12 .ForeColor = Color.FromArgb(72, 72, 72) .Font = drawFont .TextAlign = TextAlignment .UseSystemPasswordChar = UseSystemPasswordChar End With DrawCorners(Parent.BackColor, ClientRectangle) End Sub End Class Class MultiTxtBox Inherits ThemeControl Dim WithEvents txtbox As New TextBox #Region "lol" Private _passmask As Boolean = False Public Shadows Property UseSystemPasswordChar() As Boolean Get Return _passmask End Get Set(ByVal v As Boolean) txtbox.UseSystemPasswordChar = UseSystemPasswordChar _passmask = v Invalidate() End Set End Property Private _maxchars As Integer = 32767 Public Shadows Property MaxLength() As Integer Get Return _maxchars End Get Set(ByVal v As Integer) _maxchars = v txtbox.MaxLength = MaxLength Invalidate() End Set End Property Private _align As HorizontalAlignment Public Shadows Property TextAlignment() As HorizontalAlignment Get Return _align End Get Set(ByVal v As HorizontalAlignment) _align = v Invalidate() End Set End Property Protected Overrides Sub OnPaintBackground(ByVal pevent As System.Windows.Forms.PaintEventArgs) End Sub Protected Overrides Sub OnTextChanged(ByVal e As System.EventArgs) MyBase.OnTextChanged(e) Invalidate() End Sub Protected Overrides Sub OnBackColorChanged(ByVal e As System.EventArgs) MyBase.OnBackColorChanged(e) txtbox.BackColor = BackColor Invalidate() End Sub Protected Overrides Sub OnForeColorChanged(ByVal e As System.EventArgs) MyBase.OnForeColorChanged(e) txtbox.ForeColor = ForeColor Invalidate() End Sub Protected Overrides Sub OnFontChanged(ByVal e As System.EventArgs) MyBase.OnFontChanged(e) txtbox.Font = Font End Sub Protected Overrides Sub OnGotFocus(ByVal e As System.EventArgs) MyBase.OnGotFocus(e) txtbox.Focus() End Sub Sub TextChngTxtBox() Handles TxtBox.TextChanged Text = txtbox.Text End Sub Sub TextChng() Handles MyBase.TextChanged txtbox.Text = Text End Sub #End Region Protected Overrides Sub WndProc(ByRef m As Message) Select Case m.Msg Case 15 Invalidate() MyBase.WndProc(m) Me.PaintHook() Exit Select Case Else MyBase.WndProc(m) Exit Select End Select End Sub Sub New() MyBase.New() Controls.Add(txtbox) With txtbox .ScrollBars = ScrollBars.Vertical .Multiline = True .BackColor = Color.FromArgb(0, 0, 0) .ForeColor = ForeColor .Text = String.Empty .TextAlign = HorizontalAlignment.Center .BorderStyle = BorderStyle.None .Location = New Point(5, 8) .Font = New Font("Arial", 8.25F, FontStyle.Bold) .Size = New Size(Width - 8, Height - 11) .UseSystemPasswordChar = UseSystemPasswordChar End With Text = "" DoubleBuffered = True End Sub Overrides Sub PaintHook() Me.BackColor = Color.White G.Clear(Parent.BackColor) Dim p As New Pen(Color.FromArgb(204, 204, 204), 1) Dim o As New Pen(Color.FromArgb(252, 252, 252), 7) G.FillPath(Brushes.White, Draw.RoundRect(New Rectangle(0, 0, Width - 1, Height - 1), 2)) G.DrawPath(o, Draw.RoundRect(New Rectangle(0, 0, Width - 1, Height - 1), 2)) G.DrawPath(p, Draw.RoundRect(New Rectangle(0, 0, Width - 1, Height - 1), 2)) Dim drawFont As New Font("Tahoma", 9, FontStyle.Regular) With txtbox .Size = New Size(Width - 10, Height - 14) .ForeColor = Color.FromArgb(72, 72, 72) .Font = drawFont .TextAlign = TextAlignment .UseSystemPasswordChar = UseSystemPasswordChar End With DrawCorners(Parent.BackColor, ClientRectangle) End Sub End Class Class PanelBox Inherits ThemeContainerControl Private _Checked As Boolean Sub New() AllowTransparent() End Sub Overrides Sub PaintHook() Me.Font = New Font("Tahoma", 10) Me.ForeColor = Color.FromArgb(40, 40, 40) G.SmoothingMode = SmoothingMode.AntiAlias G.FillRectangle(New SolidBrush(Color.FromArgb(235, 235, 235)), New Rectangle(2, 0, Width, Height)) G.FillRectangle(New SolidBrush(Color.FromArgb(249, 249, 249)), New Rectangle(1, 0, Width - 3, Height - 4)) G.DrawRectangle(New Pen(Color.FromArgb(214, 214, 214)), 0, 0, Width - 2, Height - 3) End Sub End Class Class GroupDropBox Inherits ThemeContainerControl Private _Checked As Boolean Private X As Integer Private y As Integer Private _OpenedSize As Size Public Property Checked As Boolean Get Return _Checked End Get Set(ByVal V As Boolean) _Checked = V Invalidate() End Set End Property Public Property OpenSize As Size Get Return _OpenedSize End Get Set(ByVal V As Size) _OpenedSize = V Invalidate() End Set End Property Sub New() AllowTransparent() Size = New Size(90, 30) MinimumSize = New Size(5, 30) _Checked = True End Sub Overrides Sub PaintHook() Me.Font = New Font("Tahoma", 10) Me.ForeColor = Color.FromArgb(40, 40, 40) If _Checked = True Then G.SmoothingMode = SmoothingMode.AntiAlias G.Clear(Color.FromArgb(245, 245, 245)) G.FillRectangle(New SolidBrush(Color.FromArgb(231, 231, 231)), New Rectangle(0, 0, Width, 30)) G.DrawLine(New Pen(Color.FromArgb(237, 237, 237)), 1, 1, Width - 2, 1) G.DrawRectangle(New Pen(Color.FromArgb(214, 214, 214)), 0, 0, Width - 1, Height - 1) G.DrawRectangle(New Pen(Color.FromArgb(214, 214, 214)), 0, 0, Width - 1, 30) Me.Size = _OpenedSize G.DrawString("t", New Font("Marlett", 12), New SolidBrush(Me.ForeColor), Width - 25, 5) Else G.SmoothingMode = SmoothingMode.AntiAlias G.Clear(Color.FromArgb(245, 245, 245)) G.FillRectangle(New SolidBrush(Color.FromArgb(231, 231, 231)), New Rectangle(0, 0, Width, 30)) G.DrawLine(New Pen(Color.FromArgb(237, 237, 237)), 1, 1, Width - 2, 1) G.DrawRectangle(New Pen(Color.FromArgb(214, 214, 214)), 0, 0, Width - 1, Height - 1) G.DrawRectangle(New Pen(Color.FromArgb(214, 214, 214)), 0, 0, Width - 1, 30) Me.Size = New Size(Width, 30) G.DrawString("u", New Font("Marlett", 12), New SolidBrush(Me.ForeColor), Width - 25, 5) End If G.DrawString(Text, Font, New SolidBrush(Me.ForeColor), 7, 6) End Sub Private Sub meResize(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Resize If _Checked = True Then _OpenedSize = Me.Size Else End If End Sub Protected Overrides Sub OnMouseMove(ByVal e As System.Windows.Forms.MouseEventArgs) MyBase.OnMouseMove(e) X = e.X y = e.Y Invalidate() End Sub Sub changeCheck() Handles Me.MouseDown If X >= Width - 22 Then If y <= 30 Then Select Case Checked Case True Checked = False Case False Checked = True End Select End If End If End Sub End Class Class GroupPanelBox Inherits ThemeContainerControl Private _Checked As Boolean Sub New() AllowTransparent() End Sub Overrides Sub PaintHook() Me.Font = New Font("Tahoma", 10) Me.ForeColor = Color.FromArgb(40, 40, 40) G.SmoothingMode = SmoothingMode.AntiAlias G.Clear(Color.FromArgb(245, 245, 245)) G.FillRectangle(New SolidBrush(Color.FromArgb(231, 231, 231)), New Rectangle(0, 0, Width, 30)) G.DrawLine(New Pen(Color.FromArgb(233, 238, 240)), 1, 1, Width - 2, 1) G.DrawRectangle(New Pen(Color.FromArgb(214, 214, 214)), 0, 0, Width - 1, Height - 1) G.DrawRectangle(New Pen(Color.FromArgb(214, 214, 214)), 0, 0, Width - 1, 30) G.DrawString(Text, Font, New SolidBrush(Me.ForeColor), 7, 6) End Sub End Class Class ButtonGreen Inherits ThemeControl Overrides Sub PaintHook() Me.Font = New Font("Arial", 10) G.Clear(Me.BackColor) G.SmoothingMode = SmoothingMode.HighQuality Select Case MouseState Case State.MouseNone Dim p As New Pen(Color.FromArgb(120, 159, 22), 1) Dim x As New LinearGradientBrush(ClientRectangle, Color.FromArgb(157, 209, 57), Color.FromArgb(130, 181, 18), LinearGradientMode.Vertical) G.FillPath(x, Draw.RoundRect(ClientRectangle, 4)) G.DrawPath(p, Draw.RoundRect(New Rectangle(0, 0, Width - 1, Height - 1), 3)) G.DrawLine(New Pen(Color.FromArgb(190, 232, 109)), 2, 1, Width - 3, 1) DrawText(HorizontalAlignment.Center, Color.FromArgb(240, 240, 240), 0) Case State.MouseDown Dim p As New Pen(Color.FromArgb(120, 159, 22), 1) Dim x As New LinearGradientBrush(ClientRectangle, Color.FromArgb(125, 171, 25), Color.FromArgb(142, 192, 40), LinearGradientMode.Vertical) G.FillPath(x, Draw.RoundRect(ClientRectangle, 4)) G.DrawPath(p, Draw.RoundRect(New Rectangle(0, 0, Width - 1, Height - 1), 3)) G.DrawLine(New Pen(Color.FromArgb(142, 172, 30)), 2, 1, Width - 3, 1) DrawText(HorizontalAlignment.Center, Color.FromArgb(250, 250, 250), 1) Case State.MouseOver Dim p As New Pen(Color.FromArgb(120, 159, 22), 1) Dim x As New LinearGradientBrush(ClientRectangle, Color.FromArgb(165, 220, 59), Color.FromArgb(137, 191, 18), LinearGradientMode.Vertical) G.FillPath(x, Draw.RoundRect(ClientRectangle, 4)) G.DrawPath(p, Draw.RoundRect(New Rectangle(0, 0, Width - 1, Height - 1), 3)) G.DrawLine(New Pen(Color.FromArgb(190, 232, 109)), 2, 1, Width - 3, 1) DrawText(HorizontalAlignment.Center, Color.FromArgb(240, 240, 240), -1) End Select Me.Cursor = Cursors.Hand End Sub End Class Class ButtonBlue Inherits ThemeControl Overrides Sub PaintHook() Me.Font = New Font("Arial", 10) G.Clear(Me.BackColor) G.SmoothingMode = SmoothingMode.HighQuality Select Case MouseState Case State.MouseNone Dim p As New Pen(Color.FromArgb(34, 112, 171), 1) Dim x As New LinearGradientBrush(ClientRectangle, Color.FromArgb(51, 159, 231), Color.FromArgb(33, 128, 206), LinearGradientMode.Vertical) G.FillPath(x, Draw.RoundRect(ClientRectangle, 4)) G.DrawPath(p, Draw.RoundRect(New Rectangle(0, 0, Width - 1, Height - 1), 3)) G.DrawLine(New Pen(Color.FromArgb(131, 197, 241)), 2, 1, Width - 3, 1) DrawText(HorizontalAlignment.Center, Color.FromArgb(240, 240, 240), 0) Case State.MouseDown Dim p As New Pen(Color.FromArgb(34, 112, 171), 1) Dim x As New LinearGradientBrush(ClientRectangle, Color.FromArgb(37, 124, 196), Color.FromArgb(53, 153, 219), LinearGradientMode.Vertical) G.FillPath(x, Draw.RoundRect(ClientRectangle, 4)) G.DrawPath(p, Draw.RoundRect(New Rectangle(0, 0, Width - 1, Height - 1), 3)) DrawText(HorizontalAlignment.Center, Color.FromArgb(250, 250, 250), 1) Case State.MouseOver Dim p As New Pen(Color.FromArgb(34, 112, 171), 1) Dim x As New LinearGradientBrush(ClientRectangle, Color.FromArgb(54, 167, 243), Color.FromArgb(35, 165, 217), LinearGradientMode.Vertical) G.FillPath(x, Draw.RoundRect(ClientRectangle, 4)) G.DrawPath(p, Draw.RoundRect(New Rectangle(0, 0, Width - 1, Height - 1), 3)) G.DrawLine(New Pen(Color.FromArgb(131, 197, 241)), 2, 1, Width - 3, 1) DrawText(HorizontalAlignment.Center, Color.FromArgb(240, 240, 240), -1) End Select Me.Cursor = Cursors.Hand End Sub End Class Class StatusBar Inherits ThemeControl Sub New() Me.Dock = DockStyle.Bottom Me.Size = New Size(Width, 20) End Sub Overrides Sub PaintHook() Me.Font = New Font("Arial", 10) G.Clear(Me.BackColor) G.SmoothingMode = SmoothingMode.HighQuality Select Case MouseState Case State.MouseNone DrawGradient(Color.FromArgb(20, 82, 179), Color.FromArgb(58, 110, 195), 0, 0, Width, Height, 270S) G.DrawRectangle(New Pen(Color.FromArgb(12, 69, 180)), 0, 0, Width - 1, Height - 1) DrawText(HorizontalAlignment.Left, Color.FromArgb(240, 240, 240), +1) Case State.MouseDown DrawGradient(Color.FromArgb(19, 75, 172), Color.FromArgb(70, 110, 198), 0, 0, Width, Height, 270S) G.DrawRectangle(New Pen(Color.FromArgb(12, 69, 180)), 0, 0, Width - 1, Height - 1) DrawText(HorizontalAlignment.Left, Color.FromArgb(232, 232, 232), +1) Case State.MouseOver DrawGradient(Color.FromArgb(21, 79, 177), Color.FromArgb(76, 128, 218), 0, 0, Width, Height, 270S) G.DrawRectangle(New Pen(Color.FromArgb(12, 69, 180)), 0, 0, Width - 1, Height - 1) DrawText(HorizontalAlignment.Left, Color.FromArgb(250, 250, 250), +1) End Select G.DrawLine(New Pen(Color.FromArgb(50, 255, 255, 255)), 1, 1, Width - 3, 1) End Sub End Class Class ProgressBar Inherits ThemeControl Private _Maximum As Integer Dim Gloss As Boolean Dim Vertical As Boolean = True Public Property VerticalAlignment As Boolean Get Return Vertical End Get Set(ByVal v As Boolean) Vertical = v Invalidate() End Set End Property Public Property Glossy As Boolean Get Return Gloss End Get Set(ByVal v As Boolean) Gloss = v Invalidate() End Set End Property Public Property Maximum() As Integer Get Return _Maximum End Get Set(ByVal v As Integer) Select Case v Case Is < _Value _Value = v End Select _Maximum = v Invalidate() End Set End Property Private _Value As Integer Public Property Value() As Integer Get Return _Value End Get Set(ByVal v As Integer) Select Case v Case Is > _Maximum v = _Maximum End Select _Value = v Invalidate() End Set End Property Overrides Sub PaintHook() G.SmoothingMode = SmoothingMode.HighQuality G.Clear(Color.Transparent) Dim s As Integer = 0 Dim pe As New Pen(Color.FromArgb(34, 112, 171), 1) Dim xe As New LinearGradientBrush(ClientRectangle, Color.FromArgb(31, 119, 181), Color.FromArgb(33, 128, 206), LinearGradientMode.Vertical) G.FillPath(xe, Draw.RoundRect(ClientRectangle, 4)) G.DrawPath(pe, Draw.RoundRect(New Rectangle(0, 0, Width - 1, Height - 1), 3)) G.DrawLine(New Pen(Color.FromArgb(65, 131, 197, 241)), 2, 1, Width - 3, 1) 'Fill If _Value > 1 Then If Vertical Then s = (Height - CInt(_Value / _Maximum * Height)) If Glossy Then Dim p As New Pen(Color.FromArgb(34, 112, 171), 1) Dim x As New LinearGradientBrush(ClientRectangle, Color.FromArgb(51, 159, 231), Color.FromArgb(33, 128, 206), LinearGradientMode.Vertical) G.FillPath(x, Draw.RoundRect(New Rectangle(2, s + 3, Width - 5, CInt(_Value / _Maximum * Height) - 6), 4)) DrawGradient(Color.FromArgb(50, Color.White), Color.Transparent, 4, s + 3, 10, CInt(_Value / _Maximum * Height) - 7, 270S) G.DrawPath(p, Draw.RoundRect(New Rectangle(2, s + 3, Width - 5, CInt(_Value / _Maximum * Height) - 6), 3)) G.DrawLine(New Pen(Color.FromArgb(90, 131, 197, 241)), 4, s + 4, Width - 6, s + 4) ElseIf Not Glossy Then Dim p As New Pen(Color.FromArgb(34, 112, 171), 1) Dim x As New LinearGradientBrush(ClientRectangle, Color.FromArgb(51, 159, 231), Color.FromArgb(33, 128, 206), LinearGradientMode.Vertical) G.FillPath(x, Draw.RoundRect(New Rectangle(2, s + 3, Width - 5, CInt(_Value / _Maximum * Height) - 6), 4)) G.DrawPath(p, Draw.RoundRect(New Rectangle(2, s + 3, Width - 5, CInt(_Value / _Maximum * Height) - 6), 3)) G.DrawLine(New Pen(Color.FromArgb(90, 131, 197, 241)), 4, s + 4, Width - 6, s + 4) End If ElseIf Not Vertical Then s = (Height - CInt(_Value / _Maximum * Width)) If Glossy Then Dim p As New Pen(Color.FromArgb(34, 112, 171), 1) Dim x As New LinearGradientBrush(ClientRectangle, Color.FromArgb(51, 159, 231), Color.FromArgb(33, 128, 206), LinearGradientMode.Vertical) G.FillPath(x, Draw.RoundRect(New Rectangle(2, 2, CInt(_Value / _Maximum * Width) - 6, Height - 5), 4)) G.DrawLine(New Pen(Color.FromArgb(90, 131, 197, 241)), 4, 3, CInt(_Value / _Maximum * Width) - 7, 3) DrawGradient(Color.FromArgb(60, Color.White), Color.Transparent, 3, 3, CInt(_Value / _Maximum * Width) - 7, Height / 2 - 3, 0S) G.DrawPath(p, Draw.RoundRect(New Rectangle(2, 2, CInt(_Value / _Maximum * Width) - 6, Height - 5), 3)) ElseIf Not Glossy Then Dim p As New Pen(Color.FromArgb(34, 112, 171), 1) Dim x As New LinearGradientBrush(ClientRectangle, Color.FromArgb(51, 159, 231), Color.FromArgb(33, 128, 206), LinearGradientMode.Vertical) G.FillPath(x, Draw.RoundRect(New Rectangle(2, 2, CInt(_Value / _Maximum * Width) - 6, Height - 5), 4)) G.DrawLine(New Pen(Color.FromArgb(90, 131, 197, 241)), 4, 3, CInt(_Value / _Maximum * Width) - 7, 3) G.DrawPath(p, Draw.RoundRect(New Rectangle(2, 2, CInt(_Value / _Maximum * Width) - 6, Height - 5), 3)) End If End If End If 'Borders End Sub Public Sub Increment(ByVal Amount As Integer) If Me.Value + Amount > Maximum Then Me.Value = Maximum Else Me.Value += Amount End If End Sub Public Sub New() Me.Value = 0 Me.Maximum = 100 AllowTransparent() End Sub End Class Class DropDownComboBox Inherits ComboBox Private X As Integer Private Over As Boolean Sub New() MyBase.New() Font = New Font("Tahoma", 9, FontStyle.Regular) SetStyle(ControlStyles.AllPaintingInWmPaint Or ControlStyles.ResizeRedraw Or ControlStyles.UserPaint Or ControlStyles.DoubleBuffer, True) DrawMode = Windows.Forms.DrawMode.OwnerDrawFixed ItemHeight = 25 DropDownStyle = ComboBoxStyle.DropDownList End Sub Protected Overrides Sub OnMouseMove(ByVal e As System.Windows.Forms.MouseEventArgs) MyBase.OnMouseMove(e) X = e.Location.X Invalidate() End Sub Protected Overrides Sub OnMouseEnter(ByVal e As System.EventArgs) MyBase.OnMouseEnter(e) Over = True Invalidate() End Sub Protected Overrides Sub OnMouseLeave(ByVal e As System.EventArgs) MyBase.OnMouseEnter(e) Over = False Invalidate() End Sub Protected Overrides Sub OnPaint(ByVal e As PaintEventArgs) Me.Font = New Font("Tahoma", 9, FontStyle.Regular) Dim bs As New SolidBrush(Me.ForeColor) If Not DropDownStyle = ComboBoxStyle.DropDownList Then DropDownStyle = ComboBoxStyle.DropDownList Dim B As New Bitmap(Width, Height) Dim G As Graphics = Graphics.FromImage(B) Dim m As New Font("Marlett", 11) G.Clear(Color.FromArgb(50, 50, 50)) Dim GradientBrush As LinearGradientBrush = New LinearGradientBrush(New Rectangle(0, 0, Width, Height), Color.FromArgb(234, 234, 234), Color.FromArgb(242, 242, 242), 270.0F) G.FillRectangle(GradientBrush, New Rectangle(0, 0, Width, Height)) Dim op As New Pen(Color.FromArgb(204, 204, 204), 1) Dim o As New Pen(Color.FromArgb(237, 237, 237), 6) G.DrawPath(o, Draw.RoundRect(New Rectangle(0, 0, Width - 1, Height - 1), 2)) G.DrawPath(op, Draw.RoundRect(New Rectangle(0, 0, Width - 1, Height - 1), 2)) If X >= Width - 20 And Over Then GradientBrush = New LinearGradientBrush(New Rectangle(0, 0, Width, Height), Color.FromArgb(239, 239, 239), Color.FromArgb(236, 236, 236), 90.0F) G.FillRectangle(GradientBrush, New Rectangle(Width - 22, 2, 20, Height - 4)) ElseIf X < Width - 20 And Over Then GradientBrush = New LinearGradientBrush(New Rectangle(0, 0, Width, Height), Color.FromArgb(239, 239, 239), Color.FromArgb(236, 236, 236), 90.0F) G.FillRectangle(GradientBrush, New Rectangle(2, 2, Width - 27, Height - 4)) End If Dim S1 As Integer = G.MeasureString(" ... ", Font).Height If SelectedIndex <> -1 Then G.DrawString(Items(SelectedIndex), Font, bs, 4, (Height \ 2 - S1 \ 2)) G.DrawString("6", m, bs, Width - 22, (Height \ 2 - S1 \ 2)) Else If Not Items Is Nothing And Items.Count > 0 Then G.DrawString(Items(0), Font, bs, 4, (Height \ 2 - S1 \ 2)) G.DrawString("6", m, bs, Width - 22, (Height \ 2 - S1 \ 2)) Else G.DrawString(" ... ", Font, bs, 4, (Height \ 2 - S1 \ 2)) G.DrawString("6", m, bs, Width - 22, (Height \ 2 - S1 \ 2)) End If End If G.DrawLine(New Pen(Color.FromArgb(120, 255, 255, 255)), 1, 1, Width - 3, 1) e.Graphics.DrawImage(B.Clone, 0, 0) G.Dispose() : B.Dispose() End Sub Protected Overrides Sub OnDrawItem(ByVal e As DrawItemEventArgs) If e.Index < 0 Then Exit Sub Dim rect As New Rectangle() rect.X = e.Bounds.X rect.Y = e.Bounds.Y rect.Width = e.Bounds.Width - 1 rect.Height = e.Bounds.Height - 1 e.DrawBackground() If e.State = 785 Or e.State = 17 Then e.Graphics.FillRectangle(New SolidBrush(Color.FromArgb(235, 235, 235)), e.Bounds) e.Graphics.FillRectangle(New SolidBrush(Color.FromArgb(50, Me.ForeColor)), e.Bounds) e.Graphics.DrawString(Me.Items(e.Index).ToString(), e.Font, Brushes.Black, e.Bounds.X, e.Bounds.Y + 5) Else e.Graphics.FillRectangle(New SolidBrush(Color.White), e.Bounds) e.Graphics.DrawString(Me.Items(e.Index).ToString(), e.Font, Brushes.Black, e.Bounds.X, e.Bounds.Y + 4) End If MyBase.OnDrawItem(e) End Sub Private Sub GhostComboBox_DropDown(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.DropDown End Sub Private Sub GhostComboBox_DropDownClosed(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.DropDownClosed DropDownStyle = ComboBoxStyle.Simple Application.DoEvents() DropDownStyle = ComboBoxStyle.DropDownList End Sub Private Sub GhostCombo_TextChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.TextChanged Invalidate() End Sub End Class