Advertisement
Finessed

Redemption Theme

Jan 4th, 2016
163
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
VB.NET 86.47 KB | None | 0 0
  1. Imports System.Drawing.Drawing2D, System.Drawing.Text, System.Drawing
  2. Imports System.ComponentModel
  3.  
  4. ' Get more free themes at ThemesVB.NET
  5.  
  6. Public Enum MouseState As Byte
  7.     None = 0
  8.     Over = 1
  9.     Down = 2
  10. End Enum
  11.  
  12. Module Draw
  13.     Public Function RoundRect(ByVal Rectangle As Rectangle, ByVal Curve As Integer) As GraphicsPath
  14.         Dim P As GraphicsPath = New GraphicsPath()
  15.         Dim ArcRectangleWidth As Integer = Curve * 2
  16.         P.AddArc(New Rectangle(Rectangle.X, Rectangle.Y, ArcRectangleWidth, ArcRectangleWidth), -180, 90)
  17.         P.AddArc(New Rectangle(Rectangle.Width - ArcRectangleWidth + Rectangle.X, Rectangle.Y, ArcRectangleWidth, ArcRectangleWidth), -90, 90)
  18.         P.AddArc(New Rectangle(Rectangle.Width - ArcRectangleWidth + Rectangle.X, Rectangle.Height - ArcRectangleWidth + Rectangle.Y, ArcRectangleWidth, ArcRectangleWidth), 0, 90)
  19.         P.AddArc(New Rectangle(Rectangle.X, Rectangle.Height - ArcRectangleWidth + Rectangle.Y, ArcRectangleWidth, ArcRectangleWidth), 90, 90)
  20.         P.AddLine(New Point(Rectangle.X, Rectangle.Height - ArcRectangleWidth + Rectangle.Y), New Point(Rectangle.X, Curve + Rectangle.Y))
  21.         Return P
  22.     End Function
  23.     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
  24.         Dim Rectangle As Rectangle = New Rectangle(X, Y, Width, Height)
  25.         Dim P As GraphicsPath = New GraphicsPath()
  26.         Dim ArcRectangleWidth As Integer = Curve * 2
  27.         P.AddArc(New Rectangle(Rectangle.X, Rectangle.Y, ArcRectangleWidth, ArcRectangleWidth), -180, 90)
  28.         P.AddArc(New Rectangle(Rectangle.Width - ArcRectangleWidth + Rectangle.X, Rectangle.Y, ArcRectangleWidth, ArcRectangleWidth), -90, 90)
  29.         P.AddArc(New Rectangle(Rectangle.Width - ArcRectangleWidth + Rectangle.X, Rectangle.Height - ArcRectangleWidth + Rectangle.Y, ArcRectangleWidth, ArcRectangleWidth), 0, 90)
  30.         P.AddArc(New Rectangle(Rectangle.X, Rectangle.Height - ArcRectangleWidth + Rectangle.Y, ArcRectangleWidth, ArcRectangleWidth), 90, 90)
  31.         P.AddLine(New Point(Rectangle.X, Rectangle.Height - ArcRectangleWidth + Rectangle.Y), New Point(Rectangle.X, Curve + Rectangle.Y))
  32.         Return P
  33.     End Function
  34.     Private Function ImageFromCode(ByRef str$) As Image
  35.         Dim imageBytes As Byte() = Convert.FromBase64String(str)
  36.         Dim ms As New IO.MemoryStream(imageBytes, 0, imageBytes.Length) : ms.Write(imageBytes, 0, imageBytes.Length)
  37.         Dim i As Image = Image.FromStream(ms, True) : Return i
  38.     End Function
  39.     Public Function TiledTextureFromCode(ByVal str As String) As TextureBrush
  40.         Return New TextureBrush(Draw.ImageFromCode(str), WrapMode.Tile)
  41.     End Function
  42. End Module
  43. 'Get more free themes at ThemesVB.NET
  44. Public Class RedemptionButton
  45.     Inherits Control
  46.     Dim MouseState As MouseState = MouseState.None
  47.     Enum HorizontalAlignment As Byte
  48.         Left
  49.         Center
  50.         Right
  51.     End Enum
  52.     Private _TextAlign As HorizontalAlignment = HorizontalAlignment.Center
  53.     Public Property TextAlign() As HorizontalAlignment
  54.         Get
  55.             Return _TextAlign
  56.         End Get
  57.         Set(ByVal value As HorizontalAlignment)
  58.             _TextAlign = value
  59.             Invalidate()
  60.         End Set
  61.     End Property
  62.  
  63.     Public Sub New()
  64.         MyBase.New()
  65.         SetStyle(ControlStyles.AllPaintingInWmPaint, True)
  66.         SetStyle(ControlStyles.OptimizedDoubleBuffer, True)
  67.         SetStyle(ControlStyles.SupportsTransparentBackColor, True)
  68.         DoubleBuffered = True
  69.         BackColor = Color.Transparent
  70.         Font = New Font("Arial", 8.25F, FontStyle.Bold)
  71.     End Sub
  72.     Protected Overrides Sub OnPaint(e As PaintEventArgs)
  73.         Dim curve As Integer = 5
  74.         Dim b As New Bitmap(Width, Height)
  75.         Dim g As Graphics = Graphics.FromImage(b)
  76.         g.SmoothingMode = SmoothingMode.HighQuality
  77.         g.TextRenderingHint = TextRenderingHint.AntiAlias
  78.         MyBase.OnPaint(e)
  79.         If Enabled Then
  80.             g.Clear(BackColor)
  81.             Select Case MouseState
  82.                 Case MouseState.None
  83.                     Dim MainBody As New LinearGradientBrush(New Rectangle(0, 0, Width - 1, Height - 1), Color.FromArgb(55, 62, 70), Color.FromArgb(43, 44, 48), 90S)
  84.                     g.FillPath(MainBody, Draw.RoundRect(New Rectangle(0, 0, Width - 1, Height - 1), curve))
  85.                     Dim GlossPen As New LinearGradientBrush(New Rectangle(0, 0, Width - 1, Height - 1), Color.FromArgb(93, 98, 104), Color.Transparent, 90S)
  86.                     g.DrawPath(New Pen(GlossPen), Draw.RoundRect(New Rectangle(0, 1, Width - 1, Height - 1), curve + 1))
  87.                 Case MouseState.Over
  88.                     Dim MainBody As New LinearGradientBrush(New Rectangle(0, 0, Width - 1, Height - 1), Color.FromArgb(72, 79, 87), Color.FromArgb(48, 51, 56), 90S)
  89.                     g.FillPath(MainBody, Draw.RoundRect(New Rectangle(0, 0, Width - 1, Height - 1), curve))
  90.                     Dim GlossPen As New LinearGradientBrush(New Rectangle(1, 1, Width - 3, Height - 3), Color.FromArgb(119, 124, 130), Color.FromArgb(64, 67, 72), 90S)
  91.                     g.DrawPath(New Pen(GlossPen), Draw.RoundRect(New Rectangle(1, 1, Width - 3, Height - 3), curve))
  92.                 Case MouseState.Down
  93.                     Dim MainBody As New LinearGradientBrush(New Rectangle(0, 0, Width - 1, Height - 1), Color.FromArgb(43, 44, 48), Color.FromArgb(51, 54, 59), 90S)
  94.                     g.FillPath(MainBody, Draw.RoundRect(New Rectangle(0, 0, Width - 1, Height - 1), curve))
  95.                     Dim GlossPen As New LinearGradientBrush(New Rectangle(0, 0, Width - 1, Height - 1), Color.FromArgb(55, 56, 60), Color.Transparent, 90S)
  96.                     g.DrawPath(New Pen(GlossPen), Draw.RoundRect(New Rectangle(0, 1, Width - 1, Height - 1), curve + 1))
  97.             End Select
  98.  
  99.             g.DrawPath(New Pen(Color.FromArgb(31, 36, 42)), Draw.RoundRect(New Rectangle(0, 0, Width - 1, Height - 1), curve))
  100.         Else
  101.  
  102.         End If
  103.  
  104.         'Get more free themes at ThemesVB.NET
  105.         Dim sf As New StringFormat()
  106.         Select Case TextAlign
  107.             Case HorizontalAlignment.Center
  108.                 sf.Alignment = StringAlignment.Center
  109.                 sf.LineAlignment = StringAlignment.Center
  110.                 g.DrawString(Text, Font, New SolidBrush(Color.FromArgb(16, 20, 21)), New Rectangle(1, 2, Width - 1, Height - 1), sf)
  111.                 g.DrawString(Text, Font, Brushes.White, New Rectangle(0, 1, Width - 1, Height - 1), sf)
  112.             Case HorizontalAlignment.Left
  113.                 sf.Alignment = StringAlignment.Near
  114.                 sf.LineAlignment = StringAlignment.Center
  115.                 g.DrawString(Text, Font, New SolidBrush(Color.FromArgb(16, 20, 21)), New Rectangle(6, 2, Width - 1, Height - 1), sf)
  116.                 g.DrawString(Text, Font, Brushes.White, New Rectangle(5, 1, Width - 1, Height - 1), sf)
  117.             Case HorizontalAlignment.Right
  118.                 sf.Alignment = StringAlignment.Far
  119.                 sf.LineAlignment = StringAlignment.Center
  120.                 g.DrawString(Text, Font, New SolidBrush(Color.FromArgb(16, 20, 21)), New Rectangle(-3, 2, Width - 1, Height - 1), sf)
  121.                 g.DrawString(Text, Font, Brushes.White, New Rectangle(-4, 1, Width - 1, Height - 1), sf)
  122.         End Select
  123.  
  124.  
  125.         e.Graphics.DrawImage(b, New Point(0, 0))
  126.         g.Dispose()
  127.         b.Dispose()
  128.     End Sub
  129.     Protected Overrides Sub OnMouseEnter(e As EventArgs)
  130.         If Enabled Then
  131.             MyBase.OnMouseEnter(e) : MouseState = MouseState.Over : Invalidate() : Cursor = Cursors.Hand
  132.         End If
  133.     End Sub
  134.     Protected Overrides Sub OnMouseDown(e As MouseEventArgs)
  135.         If Enabled Then
  136.             MyBase.OnMouseDown(e) : MouseState = MouseState.Down : Invalidate() : Cursor = Cursors.Hand
  137.         End If
  138.     End Sub
  139.     Protected Overrides Sub OnMouseUp(e As MouseEventArgs)
  140.         If Enabled Then
  141.             MyBase.OnMouseUp(e) : MouseState = MouseState.Over : Invalidate() : Cursor = Cursors.Hand
  142.         End If
  143.     End Sub
  144.     Protected Overrides Sub OnMouseLeave(e As EventArgs)
  145.         If Enabled Then
  146.             MyBase.OnMouseLeave(e) : MouseState = MouseState.None : Invalidate() : Cursor = Cursors.Default
  147.         End If
  148.     End Sub
  149.     Protected Overrides Sub OnTextChanged(e As EventArgs)
  150.         MyBase.OnTextChanged(e)
  151.         Invalidate()
  152.     End Sub
  153. End Class
  154.  
  155. Public Class RedemptionRoundButton
  156.     Inherits Control
  157.     Dim MouseState As MouseState = MouseState.None
  158.     Enum HorizontalAlignment As Byte
  159.         Left
  160.         Center
  161.         Right
  162.     End Enum
  163.     Private _TextAlign As HorizontalAlignment = HorizontalAlignment.Center
  164.     Public Property TextAlign() As HorizontalAlignment
  165.         Get
  166.             Return _TextAlign
  167.         End Get
  168.         Set(ByVal value As HorizontalAlignment)
  169.             _TextAlign = value
  170.             Invalidate()
  171.         End Set
  172.     End Property
  173.  
  174.     Public Sub New()
  175.         MyBase.New()
  176.         SetStyle(ControlStyles.AllPaintingInWmPaint, True)
  177.         SetStyle(ControlStyles.OptimizedDoubleBuffer, True)
  178.         SetStyle(ControlStyles.SupportsTransparentBackColor, True)
  179.         DoubleBuffered = True
  180.         BackColor = Color.Transparent
  181.         Font = New Font("Arial", 8.25F, FontStyle.Bold)
  182.     End Sub
  183.     Protected Overrides Sub OnPaint(e As PaintEventArgs)
  184.         Dim curve As Integer = 13
  185.         Dim b As New Bitmap(Width, Height)
  186.         Dim g As Graphics = Graphics.FromImage(b)
  187.         g.SmoothingMode = SmoothingMode.HighQuality
  188.         g.TextRenderingHint = TextRenderingHint.AntiAlias
  189.         MyBase.OnPaint(e)
  190.         If Enabled Then
  191.             g.Clear(BackColor)
  192.             Select Case MouseState
  193.                 Case MouseState.None
  194.                     Dim MainBody As New LinearGradientBrush(New Rectangle(0, 0, Width - 1, Height - 1), Color.FromArgb(131, 198, 240), Color.FromArgb(24, 121, 218), 90S)
  195.                     g.FillPath(MainBody, Draw.RoundRect(New Rectangle(0, 0, Width - 1, Height - 1), curve))
  196.                     Dim GlossPen As New LinearGradientBrush(New Rectangle(0, 0, Width - 1, Height - 1), Color.FromArgb(145, 212, 254), Color.Transparent, 90S)
  197.                     g.DrawPath(New Pen(GlossPen), Draw.RoundRect(New Rectangle(0, 1, Width - 1, Height - 2), curve + 1))
  198.                 Case MouseState.Over
  199.                     Dim MainBody As New LinearGradientBrush(New Rectangle(0, 0, Width - 1, Height - 1), Color.FromArgb(150, 203, 235), Color.FromArgb(35, 135, 220), 90S)
  200.                     g.FillPath(MainBody, Draw.RoundRect(New Rectangle(0, 0, Width - 1, Height - 1), curve))
  201.                     Dim GlossPen As New LinearGradientBrush(New Rectangle(1, 1, Width - 3, Height - 3), Color.FromArgb(173, 226, 255), Color.FromArgb(54, 155, 235), 90S)
  202.                     g.DrawPath(New Pen(GlossPen), Draw.RoundRect(New Rectangle(1, 1, Width - 3, Height - 3), curve))
  203.                 Case MouseState.Down
  204.                     Dim MainBody As New LinearGradientBrush(New Rectangle(0, 0, Width - 1, Height - 1), Color.FromArgb(30, 121, 210), Color.FromArgb(84, 172, 236), 90S)
  205.                     g.FillPath(MainBody, Draw.RoundRect(New Rectangle(0, 0, Width - 1, Height - 1), curve))
  206.                     Dim GlossPen As New LinearGradientBrush(New Rectangle(0, 0, Width - 1, Height - 1), Color.FromArgb(54, 145, 234), Color.Transparent, 90S)
  207.                     g.DrawPath(New Pen(GlossPen), Draw.RoundRect(New Rectangle(0, 1, Width - 1, Height - 1), curve + 1))
  208.             End Select
  209.             g.DrawPath(New Pen(Color.FromArgb(21, 38, 56)), Draw.RoundRect(New Rectangle(0, 0, Width - 1, Height - 1), curve))
  210.             g.FillRectangle(New SolidBrush(Parent.BackColor), New Rectangle(-1, -1, 2, 10))
  211.             g.FillRectangle(New SolidBrush(Parent.BackColor), New Rectangle(-2, -1, 4, 9))
  212.         Else
  213.  
  214.         End If
  215.  
  216.  
  217.         Dim sf As New StringFormat()
  218.         Select Case TextAlign
  219.             Case HorizontalAlignment.Center
  220.                 sf.Alignment = StringAlignment.Center
  221.                 sf.LineAlignment = StringAlignment.Center
  222.                 g.DrawString(Text, Font, New SolidBrush(Color.FromArgb(16, 20, 21)), New Rectangle(1, 2, Width - 1, Height - 1), sf)
  223.                 g.DrawString(Text, Font, Brushes.White, New Rectangle(0, 1, Width - 1, Height - 1), sf)
  224.             Case HorizontalAlignment.Left
  225.                 sf.Alignment = StringAlignment.Near
  226.                 sf.LineAlignment = StringAlignment.Center
  227.                 g.DrawString(Text, Font, New SolidBrush(Color.FromArgb(16, 20, 21)), New Rectangle(6, 2, Width - 1, Height - 1), sf)
  228.                 g.DrawString(Text, Font, Brushes.White, New Rectangle(5, 1, Width - 1, Height - 1), sf)
  229.             Case HorizontalAlignment.Right
  230.                 sf.Alignment = StringAlignment.Far
  231.                 sf.LineAlignment = StringAlignment.Center
  232.                 g.DrawString(Text, Font, New SolidBrush(Color.FromArgb(16, 20, 21)), New Rectangle(-3, 2, Width - 1, Height - 1), sf)
  233.                 g.DrawString(Text, Font, Brushes.White, New Rectangle(-4, 1, Width - 1, Height - 1), sf)
  234.         End Select
  235.  
  236.  
  237.         e.Graphics.DrawImage(b, New Point(0, 0))
  238.         g.Dispose()
  239.         b.Dispose()
  240.     End Sub
  241.     Protected Overrides Sub OnMouseEnter(e As EventArgs)
  242.         If Enabled Then
  243.             MyBase.OnMouseEnter(e) : MouseState = MouseState.Over : Invalidate() : Cursor = Cursors.Hand
  244.         End If
  245.     End Sub
  246.     Protected Overrides Sub OnMouseDown(e As MouseEventArgs)
  247.         If Enabled Then
  248.             MyBase.OnMouseDown(e) : MouseState = MouseState.Down : Invalidate() : Cursor = Cursors.Hand
  249.         End If
  250.     End Sub
  251.     Protected Overrides Sub OnMouseUp(e As MouseEventArgs)
  252.         If Enabled Then
  253.             MyBase.OnMouseUp(e) : MouseState = MouseState.Over : Invalidate() : Cursor = Cursors.Hand
  254.         End If
  255.     End Sub
  256.     Protected Overrides Sub OnMouseLeave(e As EventArgs)
  257.         If Enabled Then
  258.             MyBase.OnMouseLeave(e) : MouseState = MouseState.None : Invalidate() : Cursor = Cursors.Default
  259.         End If
  260.     End Sub
  261.     Protected Overrides Sub OnTextChanged(e As EventArgs)
  262.         MyBase.OnTextChanged(e)
  263.         Invalidate()
  264.     End Sub
  265. End Class
  266.  
  267. Public Class RedemptionTextBox : Inherits Control
  268.     Dim WithEvents txtbox As New TextBox
  269. #Region " Control Help - Properties & Flicker Control "
  270.     Private _UsePassword As Boolean = False
  271.     Public Shadows Property UseSystemPasswordChar() As Boolean
  272.         Get
  273.             Return _UsePassword
  274.         End Get
  275.         Set(ByVal v As Boolean)
  276.             txtbox.UseSystemPasswordChar = UseSystemPasswordChar
  277.             _UsePassword = v
  278.             Invalidate()
  279.         End Set
  280.     End Property
  281.     Private _MaxCharacters As Integer = 32767
  282.     Public Shadows Property MaxLength() As Integer
  283.         Get
  284.             Return _MaxCharacters
  285.         End Get
  286.         Set(ByVal v As Integer)
  287.             _MaxCharacters = v
  288.             txtbox.MaxLength = MaxLength
  289.             Invalidate()
  290.         End Set
  291.     End Property
  292.     Private _TextAlignment As HorizontalAlignment
  293.     Public Shadows Property TextAlign() As HorizontalAlignment
  294.         Get
  295.             Return _TextAlignment
  296.         End Get
  297.         Set(ByVal v As HorizontalAlignment)
  298.             _TextAlignment = v
  299.             Invalidate()
  300.         End Set
  301.     End Property
  302.     Private _MultiLine As Boolean = False
  303.     Public Shadows Property MultiLine() As Boolean
  304.         Get
  305.             Return _MultiLine
  306.         End Get
  307.         Set(ByVal value As Boolean)
  308.             _MultiLine = value
  309.             txtbox.Multiline = value
  310.             OnResize(EventArgs.Empty)
  311.             Invalidate()
  312.         End Set
  313.     End Property
  314.  
  315.  
  316.     Protected Overrides Sub OnTextChanged(ByVal e As System.EventArgs)
  317.         MyBase.OnTextChanged(e)
  318.         Invalidate()
  319.     End Sub
  320.     Protected Overrides Sub OnBackColorChanged(ByVal e As System.EventArgs)
  321.         MyBase.OnBackColorChanged(e)
  322.         Invalidate()
  323.     End Sub
  324.     Protected Overrides Sub OnForeColorChanged(ByVal e As System.EventArgs)
  325.         MyBase.OnForeColorChanged(e)
  326.         txtbox.ForeColor = ForeColor
  327.         Invalidate()
  328.     End Sub
  329.     Protected Overrides Sub OnFontChanged(ByVal e As System.EventArgs)
  330.         MyBase.OnFontChanged(e)
  331.         txtbox.Font = Font
  332.     End Sub
  333.     Protected Overrides Sub OnGotFocus(ByVal e As System.EventArgs)
  334.         MyBase.OnGotFocus(e)
  335.         txtbox.Focus()
  336.     End Sub
  337.     Private Sub TextChngTxtBox() Handles txtbox.TextChanged
  338.         Text = txtbox.Text
  339.     End Sub
  340.     Private Sub TextChng() Handles MyBase.TextChanged
  341.         txtbox.Text = Text
  342.     End Sub
  343.     Sub NewTextBox()
  344.         With txtbox
  345.             .Multiline = False
  346.             .BackColor = Color.FromArgb(49, 50, 54)
  347.             .ForeColor = ForeColor
  348.             .Text = String.Empty
  349.             .TextAlign = HorizontalAlignment.Center
  350.             .BorderStyle = BorderStyle.None
  351.             .Location = New Point(5, 4)
  352.             .Font = New Font("Arial", 8.25F, FontStyle.Bold)
  353.             .Size = New Size(Width - 10, Height - 11)
  354.             .UseSystemPasswordChar = UseSystemPasswordChar
  355.         End With
  356.  
  357.     End Sub
  358. #End Region
  359.  
  360.     Sub New()
  361.         MyBase.New()
  362.  
  363.         NewTextBox()
  364.         Controls.Add(txtbox)
  365.  
  366.         SetStyle(ControlStyles.UserPaint, True)
  367.         SetStyle(ControlStyles.SupportsTransparentBackColor, True)
  368.  
  369.         Text = ""
  370.         BackColor = Color.Transparent
  371.         ForeColor = Color.White
  372.         Font = New Font("Arial", 8.25F, FontStyle.Bold)
  373.         Size = New Size(135, 24)
  374.         DoubleBuffered = True
  375.     End Sub
  376.  
  377.     Protected Overrides Sub OnPaint(ByVal e As System.Windows.Forms.PaintEventArgs)
  378.         Dim B As New Bitmap(Width, Height)
  379.         Dim G As Graphics = Graphics.FromImage(B)
  380.         Dim Curve As Integer = 4
  381.         G.SmoothingMode = SmoothingMode.HighQuality
  382.  
  383.         With txtbox
  384.             .TextAlign = TextAlign
  385.             .UseSystemPasswordChar = UseSystemPasswordChar
  386.         End With
  387.  
  388.         G.Clear(Color.Transparent)
  389.         G.FillPath(New SolidBrush(Color.FromArgb(49, 50, 54)), Draw.RoundRect(New Rectangle(0, 0, Width - 1, Height - 1), Curve))
  390.         Dim GradientPen As Color() = {Color.FromArgb(43, 44, 48), Color.FromArgb(44, 45, 49), Color.FromArgb(45, 46, 50), Color.FromArgb(46, 47, 51), Color.FromArgb(47, 48, 52), Color.FromArgb(48, 49, 53)}
  391.         For i As Integer = 0 To 5
  392.             G.DrawPath(New Pen(GradientPen(i)), Draw.RoundRect(New Rectangle(i + 1, i + 1, Width - ((2 * i) + 3), Height - ((2 * i) + 3)), Curve))
  393.         Next
  394.         Dim BorderPen As New LinearGradientBrush(New Rectangle(0, 0, Width - 1, Height - 1), Color.Transparent, Color.FromArgb(87, 88, 92), 90S)
  395.         G.DrawPath(New Pen(BorderPen), Draw.RoundRect(New Rectangle(0, 0, Width - 1, Height - 1), Curve))
  396.         G.DrawPath(New Pen(Color.FromArgb(32, 33, 37)), Draw.RoundRect(New Rectangle(0, 0, Width - 1, Height - 2), Curve))
  397.  
  398.         e.Graphics.DrawImage(B.Clone(), 0, 0)
  399.         G.Dispose() : B.Dispose()
  400.     End Sub
  401.  
  402.     Protected Overrides Sub OnResize(e As EventArgs)
  403.         MyBase.OnResize(e)
  404.         If Not MultiLine Then
  405.             Dim TextBoxHeight As Integer = txtbox.Height
  406.             txtbox.Location = New Point(10, (Height / 2) - (TextBoxHeight / 2) - 1)
  407.             txtbox.Size = New Size(Width - 20, TextBoxHeight)
  408.         Else
  409.             Dim TextBoxHeight As Integer = txtbox.Height
  410.             txtbox.Location = New Point(10, 10)
  411.             txtbox.Size = New Size(Width - 20, Height - 20)
  412.         End If
  413.     End Sub
  414. End Class
  415.  
  416. Public Class RedemptionProgressBar
  417.     Inherits Control
  418.  
  419. #Region "Properties"
  420.     Private val As Integer
  421.     Public Property Value() As Integer
  422.         Get
  423.             Return val
  424.         End Get
  425.         Set(ByVal _value As Integer)
  426.             If _value > max Then
  427.                 val = max
  428.             ElseIf _value < 0 Then
  429.                 val = 0
  430.             Else
  431.                 val = _value
  432.             End If
  433.             Invalidate()
  434.         End Set
  435.     End Property
  436.     Private max As Integer
  437.     Public Property Maximum() As Integer
  438.         Get
  439.             Return max
  440.         End Get
  441.         Set(ByVal _value As Integer)
  442.             If _value < 1 Then
  443.                 max = 1
  444.             Else
  445.                 max = _value
  446.             End If
  447.  
  448.             If _value < val Then
  449.                 val = max
  450.             End If
  451.  
  452.             Invalidate()
  453.         End Set
  454.     End Property
  455. #End Region
  456.     Protected Overrides Sub OnResize(e As EventArgs)
  457.         MyBase.OnResize(e)
  458.     End Sub
  459.     Sub New()
  460.         max = 100
  461.         SetStyle(ControlStyles.OptimizedDoubleBuffer, True)
  462.         SetStyle(ControlStyles.AllPaintingInWmPaint, True)
  463.         SetStyle(ControlStyles.SupportsTransparentBackColor, True)
  464.         BackColor = Color.Transparent
  465.     End Sub
  466.  
  467.     Protected Overrides Sub OnPaint(ByVal e As System.Windows.Forms.PaintEventArgs)
  468.         Dim curve As Integer = 6
  469.         Dim b As New Bitmap(Width, Height)
  470.         Dim g As Graphics = Graphics.FromImage(b)
  471.         g.SmoothingMode = SmoothingMode.HighQuality
  472.         g.TextRenderingHint = TextRenderingHint.ClearTypeGridFit
  473.         Dim Fill As Integer = CInt((Width - 1) * (val / max))
  474.  
  475.         g.Clear(Color.Transparent)
  476.         g.FillPath(New SolidBrush(Color.FromArgb(49, 50, 54)), Draw.RoundRect(New Rectangle(0, 0, Width - 1, Height - 1), curve))
  477.         Dim GradientPen As Color() = {Color.FromArgb(43, 44, 48), Color.FromArgb(44, 45, 49), Color.FromArgb(45, 46, 50), Color.FromArgb(46, 47, 51), Color.FromArgb(47, 48, 52), Color.FromArgb(48, 49, 53)}
  478.         For i As Integer = 0 To 5
  479.             g.DrawPath(New Pen(GradientPen(i)), Draw.RoundRect(New Rectangle(i + 1, i + 1, Width - ((2 * i) + 3), Height - ((2 * i) + 3)), curve))
  480.         Next
  481.  
  482.         If Fill > 4 Then
  483.             g.FillPath(New SolidBrush(Color.FromArgb(80, 164, 234)), Draw.RoundRect(New Rectangle(0, 0, Fill, Height - 2), curve))
  484.             Dim FillTexture As New HatchBrush(HatchStyle.DarkUpwardDiagonal, Color.FromArgb(100, 26, 127, 217), Color.Transparent)
  485.             Dim Gloss As New LinearGradientBrush(New Rectangle(0, 0, Fill, Height - 2), Color.FromArgb(75, Color.White), Color.FromArgb(65, Color.Black), 90S)
  486.             g.FillPath(Gloss, Draw.RoundRect(New Rectangle(0, 0, Fill, Height - 2), curve))
  487.             g.FillPath(FillTexture, Draw.RoundRect(New Rectangle(0, 0, Fill, Height - 2), curve))
  488.             Dim FillGradientBorder As New LinearGradientBrush(New Rectangle(0, 0, Fill, Height - 2), Color.FromArgb(183, 223, 249), Color.FromArgb(41, 141, 226), 90S)
  489.             g.DrawPath(New Pen(FillGradientBorder), Draw.RoundRect(New Rectangle(1, 1, Fill - 2, Height - 4), curve))
  490.             g.DrawPath(New Pen(Color.FromArgb(1, 44, 76)), Draw.RoundRect(New Rectangle(0, 0, Fill, Height - 2), curve))
  491.  
  492.         End If
  493.  
  494.         Dim BorderPen As New LinearGradientBrush(New Rectangle(0, 0, Width - 1, Height - 1), Color.Transparent, Color.FromArgb(87, 88, 92), 90S)
  495.         g.DrawPath(New Pen(BorderPen), Draw.RoundRect(New Rectangle(0, 0, Width - 1, Height - 1), curve))
  496.         g.DrawPath(New Pen(Color.FromArgb(32, 33, 37)), Draw.RoundRect(New Rectangle(0, 0, Width - 1, Height - 2), curve))
  497.  
  498.  
  499.         e.Graphics.DrawImage(b.Clone, 0, 0)
  500.         g.Dispose() : b.Dispose()
  501.     End Sub
  502. End Class
  503.  
  504. Public Class RedemptionLabel : Inherits Control
  505.     Sub New()
  506.         SetStyle(ControlStyles.SupportsTransparentBackColor, True)
  507.         SetStyle(ControlStyles.UserPaint, True)
  508.         SetStyle(ControlStyles.AllPaintingInWmPaint, True)
  509.         SetStyle(ControlStyles.OptimizedDoubleBuffer, True)
  510.         DoubleBuffered = True
  511.         ForeColor = Color.White
  512.         BackColor = Color.FromArgb(51, 56, 60)
  513.         Font = New Font("Arial", 8.25F, FontStyle.Bold)
  514.     End Sub
  515.     Protected Overrides Sub OnTextChanged(e As EventArgs)
  516.         MyBase.OnTextChanged(e) : Invalidate()
  517.     End Sub
  518.     Protected Overrides Sub OnPaint(e As PaintEventArgs)
  519.         Dim B As New Bitmap(Width, Height)
  520.         Dim G As Graphics = Graphics.FromImage(B)
  521.  
  522.         MyBase.OnPaint(e)
  523.         G.TextRenderingHint = TextRenderingHint.AntiAlias
  524.         G.Clear(BackColor)
  525.         G.DrawString(Text, Font, New SolidBrush(Color.FromArgb(16, 20, 21)), New Rectangle(1, 1, Width - 1, Height - 1), New StringFormat With {.LineAlignment = StringAlignment.Center, .Alignment = StringAlignment.Near})
  526.         G.DrawString(Text, Font, New SolidBrush(ForeColor), New Rectangle(0, 0, Width - 1, Height - 1), New StringFormat With {.LineAlignment = StringAlignment.Center, .Alignment = StringAlignment.Near})
  527.  
  528.  
  529.         e.Graphics.DrawImage(B, New Point(0, 0))
  530.         G.Dispose() : B.Dispose()
  531.     End Sub
  532. End Class
  533.  
  534. Public Class RedemptionTabControl
  535.     Inherits TabControl
  536.  
  537.     Enum HorizontalAlignments
  538.         Left
  539.         Center
  540.         Right
  541.     End Enum
  542.     Private _Align As HorizontalAlignments = HorizontalAlignments.Left
  543.     Public Property TextAlign() As HorizontalAlignments
  544.         Get
  545.             Return _Align
  546.         End Get
  547.         Set(ByVal value As HorizontalAlignments)
  548.             _Align = value
  549.             Invalidate()
  550.         End Set
  551.     End Property
  552.     Private _BackgrounNoise As Boolean
  553.     Public Property BackgroundNoise() As Boolean
  554.         Get
  555.             Return _BackgrounNoise
  556.         End Get
  557.         Set(ByVal value As Boolean)
  558.             _BackgrounNoise = value
  559.             Invalidate()
  560.         End Set
  561.     End Property
  562.  
  563.     Sub New()
  564.         SetStyle(ControlStyles.AllPaintingInWmPaint Or ControlStyles.ResizeRedraw Or ControlStyles.UserPaint Or ControlStyles.DoubleBuffer Or ControlStyles.SupportsTransparentBackColor, True)
  565.         DoubleBuffered = True
  566.         SizeMode = TabSizeMode.Fixed
  567.         BackColor = Color.Transparent
  568.         ItemSize = New Size(35, 100)
  569.         Font = New Font("Arial", 8.25F, FontStyle.Bold)
  570.     End Sub
  571.     Protected Overrides Sub CreateHandle()
  572.         MyBase.CreateHandle()
  573.         Alignment = TabAlignment.Left
  574.     End Sub
  575.  
  576.     Protected Overrides Sub OnPaint(ByVal e As PaintEventArgs)
  577.         Dim B As New Bitmap(Width, Height)
  578.         Dim G As Graphics = Graphics.FromImage(B)
  579.         Dim Curve As Integer = 6
  580.         G.TextRenderingHint = TextRenderingHint.AntiAlias
  581.         G.SmoothingMode = SmoothingMode.HighQuality
  582.         Try : SelectedTab.BackColor = Color.FromArgb(47, 48, 52) : Catch : End Try
  583.         G.Clear(Color.FromArgb(51, 56, 60))
  584.         If BackgroundNoise Then
  585.             Dim MatteNoise As TextureBrush = Draw.TiledTextureFromCode("iVBORw0KGgoAAAANSUhEUgAAAEYAAABGCAIAAAD+THXTAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA2ZpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDo1OEU1MkNDNjNCQjBFMjExQjY2NkFFNERBQzEzREJERiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDpGQTIzMjhDQUIwM0IxMUUyOEY4NDk4NjlBRTkxQzE1QyIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpGQTIzMjhDOUIwM0IxMUUyOEY4NDk4NjlBRTkxQzE1QyIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ1M2IChXaW5kb3dzKSI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjU4RTUyQ0M2M0JCMEUyMTFCNjY2QUU0REFDMTNEQkRGIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjU4RTUyQ0M2M0JCMEUyMTFCNjY2QUU0REFDMTNEQkRGIi8+IDwvcmRmOkRlc2NyaXB0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")
  586.             G.FillRectangle(MatteNoise, New Rectangle(-1, -1, Width + 3, Height + 3))
  587.             G.FillRectangle(New SolidBrush(Color.FromArgb(15, Color.White)), New Rectangle(-1, -1, Width + 3, Height + 3))
  588.         End If
  589.         G.FillPath(New SolidBrush(Color.FromArgb(49, 50, 54)), Draw.RoundRect(New Rectangle(ItemSize.Height - 1, 0, Width - ItemSize.Height - 1 - 1, Height - 1), Curve))
  590.         Dim GradientPen As Color() = {Color.FromArgb(43, 44, 48), Color.FromArgb(44, 45, 49), Color.FromArgb(45, 46, 50), Color.FromArgb(46, 47, 51), Color.FromArgb(47, 48, 52), Color.FromArgb(48, 49, 53)}
  591.         For i As Integer = 0 To 5
  592.             G.DrawPath(New Pen(GradientPen(i)), Draw.RoundRect(New Rectangle(ItemSize.Height - 1 + i + 1, i + 1, Width - ItemSize.Height - 1 - ((2 * i) + 3), Height - ((2 * i) + 3)), Curve))
  593.         Next
  594.         Dim BorderPen As New LinearGradientBrush(New Rectangle(0, 0, Width - 1, Height - 1), Color.Transparent, Color.FromArgb(87, 88, 92), 90S)
  595.         G.DrawPath(New Pen(BorderPen), Draw.RoundRect(New Rectangle(ItemSize.Height - 1, 0, Width - ItemSize.Height - 1 - 1, Height - 1), Curve))
  596.         G.DrawPath(New Pen(Color.FromArgb(32, 33, 37)), Draw.RoundRect(New Rectangle(ItemSize.Height - 1, 0, Width - ItemSize.Height - 1 - 1, Height - 2), Curve))
  597.  
  598.         For i = 0 To TabCount - 1
  599.             If i = SelectedIndex Then
  600.                 Dim OuterBorder As Rectangle = New Rectangle(New Point(GetTabRect(i).Location.X - 1, GetTabRect(i).Location.Y + 3), New Size(GetTabRect(i).Width - 7, GetTabRect(i).Height - 7))
  601.                 Dim InnerBorder As Rectangle = New Rectangle(New Point(GetTabRect(i).Location.X - 1, GetTabRect(i).Location.Y + 4), New Size(GetTabRect(i).Width - 7, GetTabRect(i).Height - 8))
  602.                 Dim MainBody As New LinearGradientBrush(OuterBorder, Color.FromArgb(72, 79, 87), Color.FromArgb(48, 51, 56), 90S)
  603.                 G.FillPath(MainBody, Draw.RoundRect(OuterBorder, Curve))
  604.                 Dim GlossPen As New LinearGradientBrush(OuterBorder, Color.FromArgb(119, 124, 130), Color.FromArgb(64, 67, 72), 90S)
  605.                 G.DrawPath(New Pen(GlossPen), Draw.RoundRect(InnerBorder, Curve))
  606.                 G.DrawPath(New Pen(Color.FromArgb(31, 36, 42)), Draw.RoundRect(OuterBorder, Curve))
  607.             End If
  608.  
  609.             Select Case TextAlign
  610.                 Case HorizontalAlignments.Center
  611.                     Dim TextRectangle As Rectangle = New Rectangle(New Point(GetTabRect(i).Location.X - 4, GetTabRect(i).Location.Y + 4), New Size(GetTabRect(i).Width - 1, GetTabRect(i).Height - 7))
  612.                     Dim TextShadow As Rectangle = New Rectangle(New Point(GetTabRect(i).Location.X - 3, GetTabRect(i).Location.Y + 5), New Size(GetTabRect(i).Width - 1, GetTabRect(i).Height - 7))
  613.                     G.DrawString(TabPages(i).Text, Font, New SolidBrush(Color.FromArgb(150, Color.Black)), TextShadow, New StringFormat With {.LineAlignment = StringAlignment.Center, .Alignment = StringAlignment.Center})
  614.                     G.DrawString(TabPages(i).Text, Font, Brushes.White, TextRectangle, New StringFormat With {.LineAlignment = StringAlignment.Center, .Alignment = StringAlignment.Center})
  615.                 Case HorizontalAlignments.Left
  616.                     Dim TextRectangle As Rectangle = New Rectangle(New Point(GetTabRect(i).Location.X + 5, GetTabRect(i).Location.Y + 4), New Size(GetTabRect(i).Width - 1, GetTabRect(i).Height - 7))
  617.                     Dim TextShadow As Rectangle = New Rectangle(New Point(GetTabRect(i).Location.X + 6, GetTabRect(i).Location.Y + 5), New Size(GetTabRect(i).Width - 1, GetTabRect(i).Height - 7))
  618.                     G.DrawString(TabPages(i).Text, Font, New SolidBrush(Color.FromArgb(150, Color.Black)), TextShadow, New StringFormat With {.LineAlignment = StringAlignment.Center, .Alignment = StringAlignment.Near})
  619.                     G.DrawString(TabPages(i).Text, Font, Brushes.White, TextRectangle, New StringFormat With {.LineAlignment = StringAlignment.Center, .Alignment = StringAlignment.Near})
  620.                 Case HorizontalAlignments.Right
  621.                     Dim TextRectangle As Rectangle = New Rectangle(New Point(GetTabRect(i).Location.X - 9, GetTabRect(i).Location.Y + 4), New Size(GetTabRect(i).Width - 1, GetTabRect(i).Height - 7))
  622.                     Dim TextShadow As Rectangle = New Rectangle(New Point(GetTabRect(i).Location.X - 8, GetTabRect(i).Location.Y + 5), New Size(GetTabRect(i).Width - 1, GetTabRect(i).Height - 7))
  623.                     G.DrawString(TabPages(i).Text, Font, New SolidBrush(Color.FromArgb(150, Color.Black)), TextShadow, New StringFormat With {.LineAlignment = StringAlignment.Center, .Alignment = StringAlignment.Far})
  624.                     G.DrawString(TabPages(i).Text, Font, Brushes.White, TextRectangle, New StringFormat With {.LineAlignment = StringAlignment.Center, .Alignment = StringAlignment.Far})
  625.             End Select
  626.         Next
  627.         e.Graphics.DrawImage(B.Clone, 0, 0)
  628.         G.Dispose() : B.Dispose()
  629.     End Sub
  630. End Class
  631.  
  632. Public Class RedemptionNumericUpDown : Inherits Control
  633.  
  634. #Region " Properties & Flicker Control "
  635.     Private State As New MouseState
  636.     Private X As Integer
  637.     Private Y As Integer
  638.     Private _Value As Long
  639.     Private _Max As Long
  640.     Private _Min As Long
  641.     Private Typing As Boolean
  642.     Public Property Value As Long
  643.         Get
  644.             Return _Value
  645.         End Get
  646.         Set(ByVal V As Long)
  647.             If V <= _Max And V >= _Min Then _Value = V
  648.             Invalidate()
  649.         End Set
  650.     End Property
  651.     Public Property Maximum As Long
  652.         Get
  653.             Return _Max
  654.         End Get
  655.         Set(ByVal V As Long)
  656.             If V > _Min Then _Max = V
  657.             If _Value > _Max Then _Value = _Max
  658.             Invalidate()
  659.         End Set
  660.     End Property
  661.     Public Property Minimum As Long
  662.         Get
  663.             Return _Min
  664.         End Get
  665.         Set(ByVal V As Long)
  666.             If V < _Max Then _Min = V
  667.             If _Value < _Min Then _Value = _Min
  668.             Invalidate()
  669.         End Set
  670.     End Property
  671.     Protected Overrides Sub OnMouseMove(ByVal e As System.Windows.Forms.MouseEventArgs)
  672.         MyBase.OnMouseMove(e)
  673.         X = e.Location.X
  674.         Y = e.Location.Y
  675.         Invalidate()
  676.         If e.X < Width - 23 Then Cursor = Cursors.IBeam Else Cursor = Cursors.Default
  677.     End Sub
  678.     Protected Overrides Sub OnResize(ByVal e As System.EventArgs)
  679.         MyBase.OnResize(e)
  680.         Me.Height = 26
  681.     End Sub
  682.     Protected Overrides Sub OnMouseDown(ByVal e As System.Windows.Forms.MouseEventArgs)
  683.         MyBase.OnMouseClick(e)
  684.         If X > Me.Width - 17 AndAlso X < Me.Width - 3 Then
  685.             If Y < 13 Then
  686.                 If (Value + 1) <= _Max Then _Value += 1
  687.             Else
  688.                 If (Value - 1) >= _Min Then _Value -= 1
  689.             End If
  690.         Else
  691.             Typing = Not Typing
  692.             Focus()
  693.         End If
  694.         Invalidate()
  695.     End Sub
  696.     Protected Overrides Sub OnKeyPress(ByVal e As System.Windows.Forms.KeyPressEventArgs)
  697.         MyBase.OnKeyPress(e)
  698.         Try
  699.             If Typing Then _Value = CStr(CStr(_Value) & e.KeyChar.ToString)
  700.             If _Value > _Max Then _Value = _Max
  701.         Catch ex As Exception : End Try
  702.     End Sub
  703.     Protected Overrides Sub OnKeyup(ByVal e As System.Windows.Forms.KeyEventArgs)
  704.         MyBase.OnKeyUp(e)
  705.         If e.KeyCode = Keys.Up Then
  706.             If (Value + 1) <= _Max Then _Value += 1
  707.             Invalidate()
  708.         ElseIf e.KeyCode = Keys.Down Then
  709.             If (Value - 1) >= _Min Then _Value -= 1
  710.         ElseIf e.KeyCode = Keys.Back Then
  711.             Dim tmp As String = _Value.ToString()
  712.             tmp = tmp.Remove(Convert.ToInt32(tmp.Length - 1))
  713.             If (tmp.Length = 0) Then tmp = "0"
  714.             _Value = Convert.ToInt32(tmp)
  715.         End If
  716.         Invalidate()
  717.     End Sub
  718.     Protected Sub DrawTriangle(ByVal Clr As Color, ByVal FirstPoint As Point, ByVal SecondPoint As Point, ByVal ThirdPoint As Point, ByVal G As Graphics)
  719.         Dim points As New List(Of Point)()
  720.         points.Add(FirstPoint)
  721.         points.Add(SecondPoint)
  722.         points.Add(ThirdPoint)
  723.         G.FillPolygon(New SolidBrush(Clr), points.ToArray)
  724.     End Sub
  725. #End Region
  726.     Sub New()
  727.         _Max = 9999999
  728.         _Min = 0
  729.         Cursor = Cursors.IBeam
  730.         SetStyle(ControlStyles.UserPaint Or ControlStyles.SupportsTransparentBackColor, True)
  731.         BackColor = Color.Transparent
  732.         ForeColor = Color.White
  733.         DoubleBuffered = True
  734.         Font = New Font("Arial", 8.25F, FontStyle.Bold)
  735.     End Sub
  736.  
  737.     Protected Overrides Sub OnPaint(ByVal e As System.Windows.Forms.PaintEventArgs)
  738.         Dim B As New Bitmap(Width, Height)
  739.         Dim G As Graphics = Graphics.FromImage(B)
  740.         Dim Curve As Integer = 4
  741.         G.Clear(BackColor)
  742.  
  743.         G.SmoothingMode = SmoothingMode.HighQuality
  744.         G.TextRenderingHint = TextRenderingHint.AntiAlias
  745.         G.FillPath(New SolidBrush(Color.FromArgb(49, 50, 54)), Draw.RoundRect(New Rectangle(0, 0, Width - 1, Height - 1), Curve))
  746.         Dim GradientPen As Color() = {Color.FromArgb(43, 44, 48), Color.FromArgb(44, 45, 49), Color.FromArgb(45, 46, 50), Color.FromArgb(46, 47, 51), Color.FromArgb(47, 48, 52), Color.FromArgb(48, 49, 53)}
  747.         For i As Integer = 0 To 5
  748.             G.DrawPath(New Pen(GradientPen(i)), Draw.RoundRect(New Rectangle(i + 1, i + 1, Width - ((2 * i) + 3), Height - ((2 * i) + 3)), Curve))
  749.         Next
  750.         G.SetClip(Draw.RoundRect(New Rectangle(0, 0, Width - 1, Height - 2), Curve))
  751.         Dim ButtonBackground As New LinearGradientBrush(New Rectangle(Width - 17, 0, 17, Height - 2), Color.FromArgb(75, 78, 87), Color.FromArgb(50, 51, 55), 90S)
  752.         G.FillRectangle(ButtonBackground, ButtonBackground.Rectangle)
  753.         G.ResetClip()
  754.         Dim BorderPen As New LinearGradientBrush(New Rectangle(0, 0, Width - 1, Height - 1), Color.Transparent, Color.FromArgb(87, 88, 92), 90S)
  755.         G.DrawPath(New Pen(BorderPen), Draw.RoundRect(New Rectangle(0, 0, Width - 1, Height - 1), Curve))
  756.         G.DrawPath(New Pen(Color.FromArgb(32, 33, 37)), Draw.RoundRect(New Rectangle(0, 0, Width - 1, Height - 2), Curve))
  757.         DrawTriangle(Color.FromArgb(22, 23, 28), New Point(Width - 12, 8), New Point(Width - 6, 8), New Point(Width - 9, 5), G)
  758.         DrawTriangle(Color.FromArgb(22, 23, 28), New Point(Width - 12, 17), New Point(Width - 6, 17), New Point(Width - 9, 20), G)
  759.         G.SetClip(Draw.RoundRect(New Rectangle(Width - 17, 0, 17, Height - 2), Curve))
  760.         G.DrawPath(New Pen(Color.FromArgb(82, 85, 92)), Draw.RoundRect(New Rectangle(1, 1, Width - 3, Height - 4), Curve))
  761.         G.ResetClip()
  762.         G.DrawLine(New Pen(Color.FromArgb(29, 37, 40)), New Point(Width - 17, 0), New Point(Width - 17, Height - 2))
  763.         G.DrawLine(New Pen(Color.FromArgb(85, 92, 98)), New Point(Width - 16, 1), New Point(Width - 16, Height - 3))
  764.         G.DrawLine(New Pen(Color.FromArgb(29, 37, 40)), New Point(Width - 17, Height / 2 - 1), New Point(Width - 1, Height / 2 - 1))
  765.         G.DrawLine(New Pen(Color.FromArgb(85, 92, 98)), New Point(Width - 16, Height / 2), New Point(Width - 2, Height / 2))
  766.  
  767.         G.DrawString(Value, Font, New SolidBrush(Color.FromArgb(16, 20, 21)), New Point(8, 8))
  768.         G.DrawString(Value, Font, Brushes.White, New Point(7, 7))
  769.         e.Graphics.DrawImage(B.Clone(), 0, 0)
  770.         G.Dispose() : B.Dispose()
  771.     End Sub
  772. End Class
  773.  
  774. Public Class RedemptionComboBox : Inherits ComboBox
  775. #Region " Control Help - Properties & Flicker Control "
  776.     Private _StartIndex As Integer = 0
  777.     Private Property StartIndex As Integer
  778.         Get
  779.             Return _StartIndex
  780.         End Get
  781.         Set(ByVal value As Integer)
  782.             _StartIndex = value
  783.             Try
  784.                 MyBase.SelectedIndex = value
  785.             Catch
  786.             End Try
  787.             Invalidate()
  788.         End Set
  789.     End Property
  790.     Sub ReplaceItem(ByVal sender As System.Object, ByVal e As System.Windows.Forms.DrawItemEventArgs) Handles Me.DrawItem
  791.         e.DrawBackground()
  792.         Try
  793.             If (e.State And DrawItemState.Selected) = DrawItemState.Selected Then
  794.                 e.Graphics.FillRectangle(New SolidBrush(Color.FromArgb(59, 60, 64)), e.Bounds)
  795.             Else
  796.                 e.Graphics.FillRectangle(New SolidBrush(Color.FromArgb(49, 50, 54)), e.Bounds)
  797.             End If
  798.             Using b As New SolidBrush(e.ForeColor)
  799.                 e.Graphics.DrawString(MyBase.GetItemText(MyBase.Items(e.Index)), e.Font, b, New Rectangle(e.Bounds.X, e.Bounds.Y + 1, e.Bounds.Width, e.Bounds.Height))
  800.             End Using
  801.         Catch
  802.         End Try
  803.     End Sub
  804.     Protected Sub DrawTriangle(ByVal Clr As Color, ByVal FirstPoint As Point, ByVal SecondPoint As Point, ByVal ThirdPoint As Point, ByVal G As Graphics)
  805.         Dim points As New List(Of Point)()
  806.         points.Add(FirstPoint)
  807.         points.Add(SecondPoint)
  808.         points.Add(ThirdPoint)
  809.         G.FillPolygon(New SolidBrush(Clr), points.ToArray)
  810.     End Sub
  811.  
  812. #End Region
  813.  
  814.     Sub New()
  815.         MyBase.New()
  816.         SetStyle(ControlStyles.AllPaintingInWmPaint, True)
  817.         SetStyle(ControlStyles.ResizeRedraw, True)
  818.         SetStyle(ControlStyles.UserPaint, True)
  819.         SetStyle(ControlStyles.DoubleBuffer, True)
  820.         SetStyle(ControlStyles.SupportsTransparentBackColor, True)
  821.         DrawMode = Windows.Forms.DrawMode.OwnerDrawFixed
  822.         BackColor = Color.Transparent
  823.         ForeColor = Color.FromArgb(182, 179, 171)
  824.         DropDownStyle = ComboBoxStyle.DropDownList
  825.         StartIndex = 0
  826.         ItemHeight = 18
  827.         DoubleBuffered = True
  828.         Font = New Font("Arial", 8.25F, FontStyle.Bold)
  829.     End Sub
  830.     Protected Overrides Sub OnResize(e As EventArgs)
  831.         MyBase.OnResize(e)
  832.         Height = 26
  833.     End Sub
  834.  
  835.     Protected Overrides Sub OnPaint(ByVal e As PaintEventArgs)
  836.         Dim B As New Bitmap(Width, Height)
  837.         Dim G As Graphics = Graphics.FromImage(B)
  838.         Dim Curve As Integer = 4
  839.         G.Clear(BackColor)
  840.  
  841.         G.SmoothingMode = SmoothingMode.HighQuality
  842.         G.TextRenderingHint = TextRenderingHint.AntiAlias
  843.         G.FillPath(New SolidBrush(Color.FromArgb(49, 50, 54)), Draw.RoundRect(New Rectangle(0, 0, Width - 1, Height - 1), Curve))
  844.  
  845.         Dim BodyGradient As New LinearGradientBrush(New Rectangle(0, 0, Width - 1, Height - 1), Color.FromArgb(57, 62, 68), Color.FromArgb(42, 43, 47), 90S)
  846.         G.FillPath(BodyGradient, Draw.RoundRect(New Rectangle(0, 0, Width - 1, Height - 1), Curve))
  847.  
  848.  
  849.         G.SetClip(Draw.RoundRect(New Rectangle(0, 0, Width - 1, Height - 2), Curve))
  850.         Dim ButtonBackground As New LinearGradientBrush(New Rectangle(Width - 17, 0, 17, Height - 2), Color.FromArgb(75, 78, 87), Color.FromArgb(50, 51, 55), 90S)
  851.         G.FillRectangle(ButtonBackground, ButtonBackground.Rectangle)
  852.         G.ResetClip()
  853.  
  854.  
  855.         Dim BorderPen As New LinearGradientBrush(New Rectangle(0, 1, Width - 1, Height - 2), Color.FromArgb(92, 97, 103), Color.Transparent, 90S)
  856.         G.DrawPath(New Pen(BorderPen), Draw.RoundRect(New Rectangle(0, 1, Width - 1, Height - 2), Curve))
  857.         G.DrawPath(New Pen(Color.FromArgb(32, 33, 37)), Draw.RoundRect(New Rectangle(0, 0, Width - 1, Height - 1), Curve))
  858.  
  859.  
  860.         DrawTriangle(Color.FromArgb(22, 23, 28), New Point(Width - 12, 8), New Point(Width - 6, 8), New Point(Width - 9, 5), G)
  861.         DrawTriangle(Color.FromArgb(22, 23, 28), New Point(Width - 12, 14), New Point(Width - 6, 14), New Point(Width - 9, 17), G)
  862.         G.SetClip(Draw.RoundRect(New Rectangle(Width - 17, 0, 17, Height), Curve))
  863.         Dim ButtonPen As New LinearGradientBrush(New Rectangle(1, 1, Width - 3, Height - 3), Color.FromArgb(82, 85, 92), Color.FromArgb(66, 67, 72), 90S)
  864.         G.DrawPath(New Pen(ButtonPen), Draw.RoundRect(New Rectangle(1, 1, Width - 3, Height - 3), Curve))
  865.         G.ResetClip()
  866.         G.DrawLine(New Pen(Color.FromArgb(29, 37, 40)), New Point(Width - 17, 0), New Point(Width - 17, Height - 2))
  867.         G.DrawLine(New Pen(Color.FromArgb(85, 92, 98)), New Point(Width - 16, 1), New Point(Width - 16, Height - 3))
  868.  
  869.         Try
  870.             G.DrawString(Text, Font, New SolidBrush(Color.FromArgb(16, 20, 21)), New Rectangle(7, 0, Width - 1, Height - 1), New StringFormat With {.LineAlignment = StringAlignment.Center, .Alignment = StringAlignment.Near})
  871.             G.DrawString(Text, Font, New SolidBrush(Color.White), New Rectangle(7, 1, Width - 1, Height - 1), New StringFormat With {.LineAlignment = StringAlignment.Center, .Alignment = StringAlignment.Near})
  872.         Catch
  873.         End Try
  874.  
  875.         e.Graphics.DrawImage(B.Clone(), 0, 0)
  876.         G.Dispose() : B.Dispose()
  877.     End Sub
  878. End Class
  879.  
  880. <DefaultEvent("CheckedChanged")> Public Class RedemptionCheckBox : Inherits Control
  881.  
  882. #Region " Control Help - MouseState & Flicker Control"
  883.     Private State As MouseState = MouseState.None
  884.     Protected Overrides Sub OnMouseEnter(ByVal e As System.EventArgs)
  885.         MyBase.OnMouseEnter(e)
  886.         State = MouseState.Over
  887.         Invalidate()
  888.     End Sub
  889.     Protected Overrides Sub OnMouseDown(ByVal e As System.Windows.Forms.MouseEventArgs)
  890.         MyBase.OnMouseDown(e)
  891.         State = MouseState.Down
  892.         Invalidate()
  893.     End Sub
  894.     Protected Overrides Sub OnMouseLeave(ByVal e As System.EventArgs)
  895.         MyBase.OnMouseLeave(e)
  896.         State = MouseState.None
  897.         Invalidate()
  898.     End Sub
  899.     Protected Overrides Sub OnMouseUp(ByVal e As System.Windows.Forms.MouseEventArgs)
  900.         MyBase.OnMouseUp(e)
  901.         State = MouseState.Over
  902.         Invalidate()
  903.     End Sub
  904.     Protected Overrides Sub OnTextChanged(ByVal e As System.EventArgs)
  905.         MyBase.OnTextChanged(e)
  906.         Width = CreateGraphics().MeasureString(Text, Font).Width + (2 * 3) + Height
  907.         Invalidate()
  908.     End Sub
  909.     Private _Checked As Boolean
  910.     Property Checked() As Boolean
  911.         Get
  912.             Return _Checked
  913.         End Get
  914.         Set(ByVal value As Boolean)
  915.             _Checked = value
  916.             Invalidate()
  917.         End Set
  918.     End Property
  919.     Protected Overrides Sub OnResize(ByVal e As System.EventArgs)
  920.         MyBase.OnResize(e)
  921.         Height = 19
  922.     End Sub
  923.     Protected Overrides Sub OnClick(ByVal e As System.EventArgs)
  924.         _Checked = Not _Checked
  925.         RaiseEvent CheckedChanged(Me)
  926.         MyBase.OnClick(e)
  927.     End Sub
  928.     Event CheckedChanged(ByVal sender As Object)
  929. #End Region
  930.  
  931.     Sub New()
  932.         MyBase.New()
  933.         SetStyle(ControlStyles.UserPaint, True)
  934.         SetStyle(ControlStyles.AllPaintingInWmPaint, True)
  935.         SetStyle(ControlStyles.OptimizedDoubleBuffer, True)
  936.         SetStyle(ControlStyles.SupportsTransparentBackColor, True)
  937.  
  938.         BackColor = Color.Transparent
  939.         ForeColor = Color.White
  940.         Size = New Size(147, 17)
  941.         DoubleBuffered = True
  942.         Font = New Font("Arial", 8.25F, FontStyle.Bold)
  943.     End Sub
  944.  
  945.     Protected Overrides Sub OnPaint(ByVal e As System.Windows.Forms.PaintEventArgs)
  946.         Dim B As New Bitmap(Width, Height)
  947.         Dim G As Graphics = Graphics.FromImage(B)
  948.         G.SmoothingMode = SmoothingMode.HighQuality
  949.         G.TextRenderingHint = Drawing.Text.TextRenderingHint.AntiAlias
  950.         Dim CheckBoxRectangle As New Rectangle(0, 0, Height - 1, Height - 1)
  951.         Dim Curve As Integer = 1
  952.  
  953.         G.Clear(BackColor)
  954.  
  955.         G.Clear(Color.Transparent)
  956.         G.FillPath(New SolidBrush(Color.FromArgb(49, 50, 54)), Draw.RoundRect(New Rectangle(0, 0, Height - 1, Height - 1), Curve))
  957.         Dim GradientPen As Color() = {Color.FromArgb(43, 44, 48), Color.FromArgb(44, 45, 49), Color.FromArgb(45, 46, 50), Color.FromArgb(46, 47, 51), Color.FromArgb(47, 48, 52), Color.FromArgb(48, 49, 53)}
  958.         For i As Integer = 0 To 5
  959.             G.DrawPath(New Pen(GradientPen(i)), Draw.RoundRect(New Rectangle(i + 1, i + 1, Height - ((2 * i) + 3), Height - ((2 * i) + 3)), Curve))
  960.         Next
  961.         Dim BorderPen As New LinearGradientBrush(New Rectangle(0, 0, Height - 1, Height - 1), Color.Transparent, Color.FromArgb(87, 88, 92), 90S)
  962.         G.DrawPath(New Pen(BorderPen), Draw.RoundRect(New Rectangle(0, 0, Height - 2, Height - 1), Curve))
  963.         G.DrawPath(New Pen(Color.FromArgb(32, 33, 37)), Draw.RoundRect(New Rectangle(0, 0, Height - 2, Height - 2), Curve))
  964.  
  965.  
  966.         If Checked Then
  967.             Dim chkPoly As Rectangle = New Rectangle(CheckBoxRectangle.X + CheckBoxRectangle.Width / 4, CheckBoxRectangle.Y + CheckBoxRectangle.Height / 4, CheckBoxRectangle.Width \ 2, CheckBoxRectangle.Height \ 2)
  968.             Dim Poly() As Point = {New Point(chkPoly.X + 1, chkPoly.Y + chkPoly.Height \ 2), New Point(chkPoly.X + chkPoly.Width \ 2, chkPoly.Y + chkPoly.Height - 1), New Point(chkPoly.X + chkPoly.Width, chkPoly.Y)}
  969.             For i = 0 To Poly.Length - 2 : G.DrawLine(New Pen(Color.White, 2), Poly(i), Poly(i + 1)) : Next
  970.         End If
  971.  
  972.         G.DrawString(Text, Font, New SolidBrush(ForeColor), New Point(21, 3), New StringFormat With {.Alignment = StringAlignment.Near, .LineAlignment = StringAlignment.Near})
  973.  
  974.         e.Graphics.DrawImage(B.Clone(), 0, 0)
  975.         G.Dispose() : B.Dispose()
  976.  
  977.     End Sub
  978.  
  979. End Class
  980.  
  981. <DefaultEvent("CheckedChanged")> Public Class RedemptionRadioButton : Inherits Control
  982.  
  983. #Region " Control Help - MouseState & Flicker Control"
  984.     Private R1 As Rectangle
  985.     Private G1 As LinearGradientBrush
  986.  
  987.     Private State As MouseState = MouseState.None
  988.     Protected Overrides Sub OnMouseEnter(ByVal e As System.EventArgs)
  989.         MyBase.OnMouseEnter(e)
  990.         State = MouseState.Over
  991.         Invalidate()
  992.     End Sub
  993.     Protected Overrides Sub OnMouseDown(ByVal e As System.Windows.Forms.MouseEventArgs)
  994.         MyBase.OnMouseDown(e)
  995.         State = MouseState.Down
  996.         Invalidate()
  997.     End Sub
  998.     Protected Overrides Sub OnMouseLeave(ByVal e As System.EventArgs)
  999.         MyBase.OnMouseLeave(e)
  1000.         State = MouseState.None
  1001.         Invalidate()
  1002.     End Sub
  1003.     Protected Overrides Sub OnMouseUp(ByVal e As System.Windows.Forms.MouseEventArgs)
  1004.         MyBase.OnMouseUp(e)
  1005.         State = MouseState.Over
  1006.         Invalidate()
  1007.     End Sub
  1008.     Protected Overrides Sub OnResize(ByVal e As System.EventArgs)
  1009.         MyBase.OnResize(e)
  1010.         Height = 19
  1011.     End Sub
  1012.     Protected Overrides Sub OnTextChanged(ByVal e As System.EventArgs)
  1013.         MyBase.OnTextChanged(e)
  1014.         Width = CreateGraphics().MeasureString(Text, Font).Width + (2 * 3) + Height
  1015.         Invalidate()
  1016.     End Sub
  1017.     Private _Checked As Boolean
  1018.     Property Checked() As Boolean
  1019.         Get
  1020.             Return _Checked
  1021.         End Get
  1022.         Set(ByVal value As Boolean)
  1023.             _Checked = value
  1024.             InvalidateControls()
  1025.             RaiseEvent CheckedChanged(Me)
  1026.             Invalidate()
  1027.         End Set
  1028.     End Property
  1029.     Protected Overrides Sub OnClick(ByVal e As EventArgs)
  1030.         If Not _Checked Then Checked = True
  1031.         MyBase.OnClick(e)
  1032.     End Sub
  1033.     Event CheckedChanged(ByVal sender As Object)
  1034.     Protected Overrides Sub OnCreateControl()
  1035.         MyBase.OnCreateControl()
  1036.         InvalidateControls()
  1037.     End Sub
  1038.     Private Sub InvalidateControls()
  1039.         Try
  1040.             If Not IsHandleCreated OrElse Not Checked Then Return
  1041.             For Each C As Control In Parent.Controls
  1042.                 If C IsNot Me AndAlso TypeOf C Is RedemptionRadioButton Then
  1043.                     DirectCast(C, RedemptionRadioButton).Checked = False
  1044.                 End If
  1045.             Next
  1046.         Catch : End Try
  1047.     End Sub
  1048. #End Region
  1049.  
  1050.     Sub New()
  1051.         MyBase.New()
  1052.         SetStyle(ControlStyles.UserPaint Or ControlStyles.SupportsTransparentBackColor, True)
  1053.         BackColor = Color.Transparent
  1054.         ForeColor = Color.White
  1055.         DoubleBuffered = True
  1056.         Size = New Size(177, 17)
  1057.         Font = New Font("Arial", 8.25F, FontStyle.Bold)
  1058.     End Sub
  1059.  
  1060.     Protected Overrides Sub OnPaint(ByVal e As System.Windows.Forms.PaintEventArgs)
  1061.         Dim B As New Bitmap(Width, Height)
  1062.         Dim G As Graphics = Graphics.FromImage(B)
  1063.         Dim RadioBtnRectangle = New Rectangle(0, 0, Height - 1, Height - 1)
  1064.  
  1065.         G.SmoothingMode = SmoothingMode.HighQuality
  1066.         G.TextRenderingHint = Drawing.Text.TextRenderingHint.AntiAlias
  1067.         G.Clear(BackColor)
  1068.  
  1069.         G.Clear(Color.Transparent)
  1070.         G.FillEllipse(New SolidBrush(Color.FromArgb(49, 50, 54)), New Rectangle(0, 0, Height - 1, Height - 1))
  1071.         Dim GradientPen As Color() = {Color.FromArgb(43, 44, 48), Color.FromArgb(44, 45, 49), Color.FromArgb(45, 46, 50), Color.FromArgb(46, 47, 51), Color.FromArgb(47, 48, 52), Color.FromArgb(48, 49, 53)}
  1072.         For i As Integer = 0 To 5
  1073.             G.DrawEllipse(New Pen(GradientPen(i)), New Rectangle(i + 1, i + 1, Height - ((2 * i) + 3), Height - ((2 * i) + 3)))
  1074.         Next
  1075.         Dim BorderPen As New LinearGradientBrush(New Rectangle(0, 0, Height - 1, Height - 1), Color.Transparent, Color.FromArgb(87, 88, 92), 90S)
  1076.         G.DrawEllipse(New Pen(BorderPen), New Rectangle(0, 0, Height - 2, Height - 1))
  1077.         G.DrawEllipse(New Pen(Color.FromArgb(32, 33, 37)), New Rectangle(0, 0, Height - 2, Height - 2))
  1078.  
  1079.  
  1080.  
  1081.         If Checked Then
  1082.             G.FillEllipse(New SolidBrush(Color.White), New Rectangle(5, 5, Height - 12, Height - 12))
  1083.         End If
  1084.  
  1085.         G.DrawString(Text, Font, New SolidBrush(ForeColor), New Point(21, 3), New StringFormat With {.Alignment = StringAlignment.Near, .LineAlignment = StringAlignment.Near})
  1086.  
  1087.         e.Graphics.DrawImage(B.Clone(), 0, 0)
  1088.         G.Dispose() : B.Dispose()
  1089.     End Sub
  1090.  
  1091. End Class
  1092.  
  1093. <DefaultEvent("CheckedChanged")> Public Class RedemptionToggle : Inherits Control
  1094.  
  1095. #Region " Control Help - MouseState & Flicker Control"
  1096.     Private State As MouseState = MouseState.None
  1097.     Protected Overrides Sub OnMouseEnter(ByVal e As System.EventArgs)
  1098.         MyBase.OnMouseEnter(e)
  1099.         State = MouseState.Over
  1100.         Invalidate()
  1101.     End Sub
  1102.     Protected Overrides Sub OnMouseDown(ByVal e As System.Windows.Forms.MouseEventArgs)
  1103.         MyBase.OnMouseDown(e)
  1104.         State = MouseState.Down
  1105.         Invalidate()
  1106.     End Sub
  1107.     Protected Overrides Sub OnMouseLeave(ByVal e As System.EventArgs)
  1108.         MyBase.OnMouseLeave(e)
  1109.         State = MouseState.None
  1110.         Invalidate()
  1111.     End Sub
  1112.     Protected Overrides Sub OnMouseUp(ByVal e As System.Windows.Forms.MouseEventArgs)
  1113.         MyBase.OnMouseUp(e)
  1114.         State = MouseState.Over
  1115.         Invalidate()
  1116.     End Sub
  1117.     Protected Overrides Sub OnTextChanged(ByVal e As System.EventArgs)
  1118.         MyBase.OnTextChanged(e)
  1119.         Invalidate()
  1120.     End Sub
  1121.     Private _Checked As Boolean
  1122.     Property Checked() As Boolean
  1123.         Get
  1124.             Return _Checked
  1125.         End Get
  1126.         Set(ByVal value As Boolean)
  1127.             _Checked = value
  1128.             Invalidate()
  1129.         End Set
  1130.     End Property
  1131.     Protected Overrides Sub OnResize(ByVal e As System.EventArgs)
  1132.         MyBase.OnResize(e)
  1133.         Size = New Size(60, 26)
  1134.     End Sub
  1135.     Protected Overrides Sub OnClick(ByVal e As System.EventArgs)
  1136.         _Checked = Not _Checked
  1137.         RaiseEvent CheckedChanged(Me)
  1138.         MyBase.OnClick(e)
  1139.     End Sub
  1140.     Event CheckedChanged(ByVal sender As Object)
  1141. #End Region
  1142.  
  1143.     Sub New()
  1144.         MyBase.New()
  1145.         SetStyle(ControlStyles.UserPaint, True)
  1146.         SetStyle(ControlStyles.AllPaintingInWmPaint, True)
  1147.         SetStyle(ControlStyles.OptimizedDoubleBuffer, True)
  1148.         SetStyle(ControlStyles.SupportsTransparentBackColor, True)
  1149.         Size = New Size(60, 26)
  1150.         BackColor = Color.Transparent
  1151.         ForeColor = Color.White
  1152.         DoubleBuffered = True
  1153.     End Sub
  1154.  
  1155.     Protected Overrides Sub OnPaint(ByVal e As System.Windows.Forms.PaintEventArgs)
  1156.         Dim B As New Bitmap(Width, Height)
  1157.         Dim G As Graphics = Graphics.FromImage(B)
  1158.         G.SmoothingMode = SmoothingMode.HighQuality
  1159.         G.TextRenderingHint = Drawing.Text.TextRenderingHint.AntiAlias
  1160.         Dim Curve As Integer = 4
  1161.  
  1162.         G.Clear(BackColor)
  1163.  
  1164.         G.Clear(Color.Transparent)
  1165.         G.FillPath(New SolidBrush(Color.FromArgb(49, 50, 54)), Draw.RoundRect(New Rectangle(0, 0, Width - 1, Height - 1), Curve))
  1166.         Dim GradientPen As Color() = {Color.FromArgb(43, 44, 48), Color.FromArgb(44, 45, 49), Color.FromArgb(45, 46, 50), Color.FromArgb(46, 47, 51), Color.FromArgb(47, 48, 52), Color.FromArgb(48, 49, 53)}
  1167.         For i As Integer = 0 To 5
  1168.             G.DrawPath(New Pen(GradientPen(i)), Draw.RoundRect(New Rectangle(i + 1, i + 1, Width - ((2 * i) + 3), Height - ((2 * i) + 3)), Curve))
  1169.         Next
  1170.         Dim BorderPen As New LinearGradientBrush(New Rectangle(0, 0, Width - 1, Height - 1), Color.Transparent, Color.FromArgb(87, 88, 92), 90S)
  1171.         G.DrawPath(New Pen(BorderPen), Draw.RoundRect(New Rectangle(0, 0, Width - 1, Height - 2), Curve))
  1172.         G.DrawPath(New Pen(Color.FromArgb(32, 33, 37)), Draw.RoundRect(New Rectangle(0, 0, Width - 1, Height - 3), Curve))
  1173.  
  1174.         Select Case Checked
  1175.             Case False
  1176.                 Dim CheckedBody As New LinearGradientBrush(New Rectangle(0, 0, 30, Height - 3), Color.FromArgb(72, 79, 87), Color.FromArgb(48, 52, 55), 90S)
  1177.                 G.FillPath(CheckedBody, Draw.RoundRect(New Rectangle(0, 0, 30, Height - 3), Curve))
  1178.                 Dim CheckedBorderPen As New LinearGradientBrush(New Rectangle(0, 0, 30, Height - 3), Color.FromArgb(29, 34, 40), Color.FromArgb(33, 34, 38), 90S)
  1179.                 G.DrawPath(New Pen(CheckedBorderPen), Draw.RoundRect(New Rectangle(0, 0, 30, Height - 3), Curve))
  1180.                 Dim CheckedBorderHighlight As New LinearGradientBrush(New Rectangle(1, 1, 28, Height - 5), Color.FromArgb(118, 123, 129), Color.FromArgb(66, 67, 71), 90S)
  1181.                 G.DrawPath(New Pen(CheckedBorderHighlight), Draw.RoundRect(New Rectangle(1, 1, 28, Height - 5), Curve))
  1182.                 For i As Integer = 0 To 2
  1183.                     G.DrawLine(New Pen(Color.FromArgb(82, 86, 95)), New Point(7, 7 + (i * 4)), New Point(22, 7 + (i * 4)))
  1184.                     G.DrawLine(New Pen(Color.FromArgb(47, 50, 57)), New Point(7, 7 + (i * 4) + 1), New Point(22, 7 + (i * 4) + 1))
  1185.                 Next
  1186.             Case True
  1187.                 Dim CheckedBody As New LinearGradientBrush(New Rectangle(29, 0, 30, Height - 3), Color.FromArgb(145, 204, 238), Color.FromArgb(35, 137, 222), 90S)
  1188.                 G.FillPath(CheckedBody, Draw.RoundRect(New Rectangle(29, 0, 30, Height - 3), Curve))
  1189.                 Dim CheckedBorderPen As New LinearGradientBrush(New Rectangle(29, 0, 30, Height - 3), Color.FromArgb(21, 37, 52), Color.FromArgb(18, 37, 54), 90S)
  1190.                 G.DrawPath(New Pen(CheckedBorderPen), Draw.RoundRect(New Rectangle(29, 0, 30, Height - 3), Curve))
  1191.                 Dim CheckedBorderHighlight As New LinearGradientBrush(New Rectangle(30, 1, 28, Height - 5), Color.FromArgb(169, 228, 255), Color.FromArgb(53, 155, 240), 90S)
  1192.                 G.DrawPath(New Pen(CheckedBorderHighlight), Draw.RoundRect(New Rectangle(30, 1, 28, Height - 5), Curve))
  1193.                 For i As Integer = 0 To 2
  1194.                     G.DrawLine(New Pen(Color.FromArgb(109, 188, 244)), New Point(36, 7 + (i * 4)), New Point(51, 7 + (i * 4)))
  1195.                     G.DrawLine(New Pen(Color.FromArgb(40, 123, 199)), New Point(36, 7 + (i * 4) + 1), New Point(51, 7 + (i * 4) + 1))
  1196.                 Next
  1197.         End Select
  1198.         e.Graphics.DrawImage(B.Clone(), 0, 0)
  1199.         G.Dispose() : B.Dispose()
  1200.  
  1201.     End Sub
  1202.  
  1203. End Class
  1204.  
  1205. <DefaultEvent("CheckedChanged")> Public Class RedemptionRoundedToggle : Inherits Control
  1206. #Region " Control Help - MouseState & Flicker Control"
  1207.     Private State As MouseState = MouseState.None
  1208.     Protected Overrides Sub OnMouseEnter(ByVal e As System.EventArgs)
  1209.         MyBase.OnMouseEnter(e)
  1210.         State = MouseState.Over
  1211.         Invalidate()
  1212.     End Sub
  1213.     Protected Overrides Sub OnMouseDown(ByVal e As System.Windows.Forms.MouseEventArgs)
  1214.         MyBase.OnMouseDown(e)
  1215.         State = MouseState.Down
  1216.         Invalidate()
  1217.     End Sub
  1218.     Protected Overrides Sub OnMouseLeave(ByVal e As System.EventArgs)
  1219.         MyBase.OnMouseLeave(e)
  1220.         State = MouseState.None
  1221.         Invalidate()
  1222.     End Sub
  1223.     Protected Overrides Sub OnMouseUp(ByVal e As System.Windows.Forms.MouseEventArgs)
  1224.         MyBase.OnMouseUp(e)
  1225.         State = MouseState.Over
  1226.         Invalidate()
  1227.     End Sub
  1228.     Protected Overrides Sub OnTextChanged(ByVal e As System.EventArgs)
  1229.         MyBase.OnTextChanged(e)
  1230.         Invalidate()
  1231.     End Sub
  1232.     Private _Checked As Boolean
  1233.     Property Checked() As Boolean
  1234.         Get
  1235.             Return _Checked
  1236.         End Get
  1237.         Set(ByVal value As Boolean)
  1238.             _Checked = value
  1239.             Invalidate()
  1240.         End Set
  1241.     End Property
  1242.     Protected Overrides Sub OnResize(ByVal e As System.EventArgs)
  1243.         MyBase.OnResize(e)
  1244.         Size = New Size(34, 21)
  1245.     End Sub
  1246.     Protected Overrides Sub OnClick(ByVal e As System.EventArgs)
  1247.         _Checked = Not _Checked
  1248.         RaiseEvent CheckedChanged(Me)
  1249.         MyBase.OnClick(e)
  1250.     End Sub
  1251.     Event CheckedChanged(ByVal sender As Object)
  1252. #End Region
  1253.  
  1254.     Sub New()
  1255.         MyBase.New()
  1256.         SetStyle(ControlStyles.UserPaint, True)
  1257.         SetStyle(ControlStyles.AllPaintingInWmPaint, True)
  1258.         SetStyle(ControlStyles.OptimizedDoubleBuffer, True)
  1259.         SetStyle(ControlStyles.SupportsTransparentBackColor, True)
  1260.         Size = New Size(34, 21)
  1261.         BackColor = Color.Transparent
  1262.         ForeColor = Color.White
  1263.         DoubleBuffered = True
  1264.     End Sub
  1265.  
  1266.     Protected Overrides Sub OnPaint(ByVal e As System.Windows.Forms.PaintEventArgs)
  1267.         Dim B As New Bitmap(Width, Height)
  1268.         Dim G As Graphics = Graphics.FromImage(B)
  1269.         G.SmoothingMode = SmoothingMode.HighQuality
  1270.         G.TextRenderingHint = Drawing.Text.TextRenderingHint.AntiAlias
  1271.         Dim CheckBoxRectangle As New Rectangle(0, 0, Height - 1, Height - 1)
  1272.         Dim Curve As Integer = 9
  1273.  
  1274.         G.Clear(BackColor)
  1275.  
  1276.         G.Clear(Color.Transparent)
  1277.         G.FillPath(New SolidBrush(Color.FromArgb(49, 50, 54)), Draw.RoundRect(New Rectangle(0, 0, Width - 1, Height - 1), Curve))
  1278.         Dim GradientPen As Color() = {Color.FromArgb(43, 44, 48), Color.FromArgb(44, 45, 49), Color.FromArgb(45, 46, 50), Color.FromArgb(46, 47, 51), Color.FromArgb(47, 48, 52), Color.FromArgb(48, 49, 53)}
  1279.         For i As Integer = 0 To 5
  1280.             G.DrawPath(New Pen(GradientPen(i)), Draw.RoundRect(New Rectangle(i + 1, i + 1, Width - ((2 * i) + 3), Height - ((2 * i) + 3)), Curve))
  1281.         Next
  1282.         Dim BorderPen As New LinearGradientBrush(New Rectangle(0, 0, Width - 1, Height - 1), Color.Transparent, Color.FromArgb(87, 88, 92), 90S)
  1283.         G.DrawPath(New Pen(BorderPen), Draw.RoundRect(New Rectangle(0, 0, Width - 1, Height - 2), Curve))
  1284.         G.DrawPath(New Pen(Color.FromArgb(32, 33, 37)), Draw.RoundRect(New Rectangle(0, 0, Width - 1, Height - 3), Curve))
  1285.         G.FillRectangle(New SolidBrush(Parent.BackColor), New Rectangle(-1, 0, 2, 7))
  1286.         Select Case Checked
  1287.             Case False
  1288.                 Dim CheckedBody As New LinearGradientBrush(New Rectangle(0, 0, Height - 3, Height - 3), Color.FromArgb(72, 79, 87), Color.FromArgb(48, 52, 55), 90S)
  1289.                 G.FillEllipse(CheckedBody, New Rectangle(0, 0, Height - 3, Height - 3))
  1290.                 Dim CheckedBorderPen As New LinearGradientBrush(New Rectangle(0, 0, Height - 3, Height - 3), Color.FromArgb(29, 34, 40), Color.FromArgb(33, 34, 38), 90S)
  1291.                 G.DrawEllipse(New Pen(CheckedBorderPen), New Rectangle(0, 0, Height - 3, Height - 3))
  1292.                 Dim CheckedBorderHighlight As New LinearGradientBrush(New Rectangle(1, 1, Height - 5, Height - 4), Color.FromArgb(118, 123, 129), Color.FromArgb(66, 67, 71), 90S)
  1293.                 G.DrawEllipse(New Pen(CheckedBorderHighlight), New Rectangle(1, 1, Height - 5, Height - 5))
  1294.             Case True
  1295.                 Dim CheckedBody As New LinearGradientBrush(New Rectangle(15, 0, Height - 3, Height - 3), Color.FromArgb(138, 211, 254), Color.FromArgb(56, 157, 229), 90S)
  1296.                 G.FillEllipse(CheckedBody, New Rectangle(15, 0, Height - 3, Height - 3))
  1297.                 Dim CheckedBorderPen As New LinearGradientBrush(New Rectangle(15, 0, Height - 3, Height - 3), Color.FromArgb(7, 39, 64), Color.FromArgb(26, 35, 42), 90S)
  1298.                 G.DrawEllipse(New Pen(CheckedBorderPen), New Rectangle(15, 0, Height - 3, Height - 3))
  1299.                 Dim CheckedBorderHighlight As New LinearGradientBrush(New Rectangle(16, 1, Height - 5, Height - 4), Color.FromArgb(176, 206, 230), Color.FromArgb(30, 107, 175), 90S)
  1300.                 G.DrawEllipse(New Pen(CheckedBorderHighlight), New Rectangle(16, 1, Height - 5, Height - 5))
  1301.         End Select
  1302.         e.Graphics.DrawImage(B.Clone(), 0, 0)
  1303.         G.Dispose() : B.Dispose()
  1304.  
  1305.     End Sub
  1306. End Class
  1307.  
  1308. Public Class RedemptionListBox : Inherits ListBox
  1309.     Sub New()
  1310.         SetStyle(ControlStyles.AllPaintingInWmPaint Or ControlStyles.OptimizedDoubleBuffer Or _
  1311.                  ControlStyles.SupportsTransparentBackColor, True)
  1312.         BackColor = Color.Transparent
  1313.         DoubleBuffered = True
  1314.         DrawMode = Windows.Forms.DrawMode.OwnerDrawFixed
  1315.         ForeColor = Color.White
  1316.         BackColor = Color.FromArgb(47, 48, 52)
  1317.         BorderStyle = Windows.Forms.BorderStyle.None
  1318.     End Sub
  1319.     Protected Overrides Sub OnPaint(e As PaintEventArgs)
  1320.         Dim G As Graphics = e.Graphics
  1321.         Dim Curve As Integer = 5
  1322.         MyBase.OnPaint(e)
  1323.         G.Clear(Color.Transparent)
  1324.         G.FillPath(New SolidBrush(Color.FromArgb(49, 50, 54)), Draw.RoundRect(New Rectangle(0, 0, Width - 1, Height - 1), Curve))
  1325.         Dim GradientPen As Color() = {Color.FromArgb(43, 44, 48), Color.FromArgb(44, 45, 49), Color.FromArgb(45, 46, 50), Color.FromArgb(46, 47, 51), Color.FromArgb(47, 48, 52), Color.FromArgb(48, 49, 53)}
  1326.         For i As Integer = 0 To 5
  1327.             G.DrawPath(New Pen(GradientPen(i)), Draw.RoundRect(New Rectangle(i + 1, i + 1, Width - ((2 * i) + 3), Height - ((2 * i) + 3)), Curve))
  1328.         Next
  1329.         Dim BorderPen As New LinearGradientBrush(New Rectangle(0, 0, Width - 1, Height - 1), Color.Transparent, Color.FromArgb(87, 88, 92), 90S)
  1330.         G.DrawPath(New Pen(BorderPen), Draw.RoundRect(New Rectangle(0, 0, Width - 1, Height - 1), Curve))
  1331.         G.DrawPath(New Pen(Color.FromArgb(32, 33, 37)), Draw.RoundRect(New Rectangle(0, 0, Width - 1, Height - 2), Curve))
  1332.  
  1333.     End Sub
  1334.     Protected Overrides Sub OnDrawItem(e As DrawItemEventArgs)
  1335.         Dim G As Graphics = e.Graphics
  1336.         Dim Curve As Integer = 5
  1337.         G.TextRenderingHint = TextRenderingHint.AntiAlias
  1338.         G.SmoothingMode = SmoothingMode.HighQuality
  1339.         G.SetClip(Draw.RoundRect(New Rectangle(0, 0, Width, Height), Curve))
  1340.        G.FillRectangle(New SolidBrush(BackColor), New Rectangle(e.Bounds.X, e.Bounds.Y - 1, e.Bounds.Width, e.Bounds.Height + 3))
  1341.  
  1342.         If e.State.ToString().Contains("Selected,") Then
  1343.             Dim MainBody As New LinearGradientBrush(New Rectangle(e.Bounds.X, e.Bounds.Y + 1, e.Bounds.Width, e.Bounds.Height), Color.FromArgb(55, 62, 70), Color.FromArgb(43, 44, 48), 90S)
  1344.             G.FillRectangle(MainBody, New Rectangle(e.Bounds.X, e.Bounds.Y + 1, e.Bounds.Width, e.Bounds.Height))
  1345.             Dim GlossPen As New LinearGradientBrush(New Rectangle(e.Bounds.X, e.Bounds.Y, e.Bounds.Width, e.Bounds.Height), Color.FromArgb(100, 93, 98, 104), Color.Transparent, 90S)
  1346.             G.DrawRectangle(New Pen(GlossPen), New Rectangle(e.Bounds.X, e.Bounds.Y + 1, e.Bounds.Width, e.Bounds.Height))
  1347.  
  1348.         Else
  1349.             G.FillRectangle(New SolidBrush(BackColor), e.Bounds)
  1350.         End If
  1351.  
  1352.         Try
  1353.             G.DrawString(Items(e.Index).ToString(), Font, New SolidBrush(Color.FromArgb(100, Color.Black)), New Rectangle(e.Bounds.X + 4, e.Bounds.Y + 2, e.Bounds.Width, e.Bounds.Height), New StringFormat With {.LineAlignment = StringAlignment.Center, .Alignment = StringAlignment.Near})
  1354.             G.DrawString(Items(e.Index).ToString(), Font, New SolidBrush(ForeColor), New Rectangle(e.Bounds.X + 3, e.Bounds.Y + 1, e.Bounds.Width, e.Bounds.Height), New StringFormat With {.LineAlignment = StringAlignment.Center, .Alignment = StringAlignment.Near})
  1355.         Catch : End Try
  1356.         Dim BorderPen As New LinearGradientBrush(New Rectangle(0, 0, Width - 1, Height - 1), Color.Transparent, Color.FromArgb(87, 88, 92), 90S)
  1357.         G.DrawPath(New Pen(BorderPen), Draw.RoundRect(New Rectangle(0, 0, Width - 1, Height - 2), Curve))
  1358.         G.DrawPath(New Pen(Color.FromArgb(32, 33, 37)), Draw.RoundRect(New Rectangle(0, 0, Width - 1, Height - 3), Curve))
  1359.     End Sub
  1360. End Class
  1361.  
  1362. Public Class RedemptionForm : Inherits ContainerControl
  1363. #Region " Control Help - Movement & Flicker Control "
  1364.     Private TransparentColor As Color = Color.Fuchsia
  1365.     Private MouseP As Point = New Point(0, 0)
  1366.     Private Cap As Boolean = False
  1367.     Private MoveHeight As Integer
  1368.     Private pos As Integer = 0
  1369.     Protected Overrides Sub OnMouseDown(ByVal e As System.Windows.Forms.MouseEventArgs)
  1370.         MyBase.OnMouseDown(e)
  1371.         If e.Button = Windows.Forms.MouseButtons.Left And New Rectangle(0, 0, Width, MoveHeight).Contains(e.Location) Then
  1372.             Cap = True : MouseP = e.Location
  1373.         End If
  1374.     End Sub
  1375.     Protected Overrides Sub OnMouseMove(ByVal e As System.Windows.Forms.MouseEventArgs)
  1376.         MyBase.OnMouseMove(e)
  1377.         If Cap Then
  1378.             Parent.Location = MousePosition - MouseP
  1379.         End If
  1380.     End Sub
  1381.     Protected Overrides Sub OnMouseUp(ByVal e As System.Windows.Forms.MouseEventArgs)
  1382.         MyBase.OnMouseUp(e) : Cap = False
  1383.     End Sub
  1384.     Protected Overrides Sub OnTextChanged(ByVal e As System.EventArgs)
  1385.         MyBase.OnTextChanged(e)
  1386.         Invalidate()
  1387.     End Sub
  1388.     Protected Overrides Sub OnResize(ByVal e As System.EventArgs)
  1389.         MyBase.OnResize(e)
  1390.         Invalidate()
  1391.     End Sub
  1392.     Protected Overrides Sub OnCreateControl()
  1393.         MyBase.OnCreateControl()
  1394.         Me.ParentForm.FormBorderStyle = FormBorderStyle.None
  1395.     End Sub
  1396.     Protected Overrides Sub CreateHandle()
  1397.         MyBase.CreateHandle()
  1398.         ParentForm.FindForm().TransparencyKey = TransparentColor
  1399.     End Sub
  1400.  
  1401.     Private _BackgroundNoise As Boolean = True
  1402.     Public Property BackgroundNoise() As Boolean
  1403.         Get
  1404.             Return _BackgroundNoise
  1405.         End Get
  1406.         Set(ByVal value As Boolean)
  1407.             _BackgroundNoise = value
  1408.             Invalidate()
  1409.         End Set
  1410.     End Property
  1411.  
  1412.  
  1413. #End Region
  1414.  
  1415.     Sub New()
  1416.         MyBase.New()
  1417.         Dock = DockStyle.Fill
  1418.         MoveHeight = 29
  1419.         Font = New Font("Verdana", 8.25F)
  1420.         SetStyle(ControlStyles.AllPaintingInWmPaint, True)
  1421.         SetStyle(ControlStyles.OptimizedDoubleBuffer, True)
  1422.     End Sub
  1423.  
  1424.     Protected Overrides Sub OnPaint(ByVal e As System.Windows.Forms.PaintEventArgs)
  1425.         Dim B As Bitmap = New Bitmap(Width, Height)
  1426.         Dim G As Graphics = Graphics.FromImage(B)
  1427.         Dim ClientRectangle As Rectangle = New Rectangle(0, 0, Width - 1, Height - 1)
  1428.         MyBase.OnPaint(e)
  1429.         G.SmoothingMode = Drawing2D.SmoothingMode.HighQuality
  1430.         G.TextRenderingHint = Drawing.Text.TextRenderingHint.AntiAlias
  1431.  
  1432.         Dim MatteNoise As TextureBrush = Draw.TiledTextureFromCode("iVBORw0KGgoAAAANSUhEUgAAAEYAAABGCAIAAAD+THXTAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA2ZpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDo1OEU1MkNDNjNCQjBFMjExQjY2NkFFNERBQzEzREJERiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDpGQTIzMjhDQUIwM0IxMUUyOEY4NDk4NjlBRTkxQzE1QyIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpGQTIzMjhDOUIwM0IxMUUyOEY4NDk4NjlBRTkxQzE1QyIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ1M2IChXaW5kb3dzKSI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjU4RTUyQ0M2M0JCMEUyMTFCNjY2QUU0REFDMTNEQkRGIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjU4RTUyQ0M2M0JCMEUyMTFCNjY2QUU0REFDMTNEQkRGIi8+IDwvcmRmOkRlc2NyaXB0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")
  1433.         G.FillRectangle(MatteNoise, ClientRectangle)
  1434.         G.FillRectangle(New SolidBrush(Color.FromArgb(25, Color.White)), New Rectangle(0, 0, Width - 1, 28))
  1435.         G.FillRectangle(New SolidBrush(Color.FromArgb(25, Color.White)), New Rectangle(0, 28, 6, Height - 35))
  1436.         G.FillRectangle(New SolidBrush(Color.FromArgb(25, Color.White)), New Rectangle(Width - 7, 28, 7, Height - 35))
  1437.         G.FillRectangle(New SolidBrush(Color.FromArgb(25, Color.White)), New Rectangle(0, Height - 7, Width - 1, 7))
  1438.         G.FillRectangle(New SolidBrush(Color.FromArgb(15, Color.White)), New Rectangle(6, 28, Width - 13, Height - 35))
  1439.         G.DrawLine(New Pen(Color.FromArgb(44, 45, 48)), New Point(6, 29), New Point(Width - 7, 29))
  1440.         G.DrawLine(New Pen(Color.FromArgb(37, 38, 40)), New Point(6, 30), New Point(Width - 7, 30))
  1441.         G.DrawLine(New Pen(Color.FromArgb(75, 60, 61, 62)), New Point(6, 31), New Point(Width - 7, 31))
  1442.         G.DrawLine(New Pen(Color.FromArgb(56, 57, 60)), New Point(5, 31), New Point(5, Height - 7))
  1443.         G.DrawLine(New Pen(Color.FromArgb(77, 78, 79)), New Point(6, 31), New Point(6, Height - 7))
  1444.         G.DrawLine(New Pen(Color.FromArgb(56, 57, 60)), New Point(Width - 7, 31), New Point(Width - 7, Height - 7))
  1445.         G.DrawLine(New Pen(Color.FromArgb(77, 78, 79)), New Point(Width - 8, 31), New Point(Width - 8, Height - 7))
  1446.         G.DrawLine(New Pen(Color.FromArgb(63, 64, 65)), New Point(6, Height - 8), New Point(Width - 7, Height - 8))
  1447.         G.DrawLine(New Pen(Color.FromArgb(63, 63, 63)), New Point(5, Height - 7), New Point(Width - 6, Height - 7))
  1448.         G.DrawLine(New Pen(Color.FromArgb(85, 86, 88)), New Point(0, 1), New Point(Width - 1, 1))
  1449.         G.DrawRectangle(New Pen(Color.FromArgb(21, 23, 25)), ClientRectangle)
  1450.  
  1451.         Dim ColorList As Color() = {Color.FromArgb(200, 34, 36, 39), Color.FromArgb(200, 5, 185, 238), Color.FromArgb(200, 34, 36, 39)}
  1452.         Dim PointList As Single() = {0 / 2, 1 / 2, 2 / 2}
  1453.         Dim AccentBrush As New LinearGradientBrush(New Rectangle(0, 0, Width - 1, Height - 1), Color.Black, Color.White, 90S)
  1454.         Dim AccentBlend As New ColorBlend With {.Colors = ColorList, .Positions = PointList}
  1455.         AccentBrush.InterpolationColors = AccentBlend
  1456.         G.DrawRectangle(New Pen(AccentBrush), New Rectangle(0, 0, Width - 1, Height - 1))
  1457.  
  1458.         Dim TextFormat As New StringFormat With {.Alignment = StringAlignment.Near, .LineAlignment = StringAlignment.Center}
  1459.         G.DrawString(Text, Font, New SolidBrush(Color.FromArgb(200, Color.Black)), New Rectangle(8, 1, Width - 1, 28), TextFormat)
  1460.         G.DrawString(Text, Font, New SolidBrush(ForeColor), New Rectangle(8, 2, Width - 1, 28), TextFormat)
  1461.  
  1462.  
  1463.         e.Graphics.DrawImage(B, New Point(0, 0))
  1464.         G.Dispose() : B.Dispose()
  1465.     End Sub
  1466.  
  1467. End Class
  1468. 'Get more free themes at ThemesVB.NET
  1469. Public Class RedemptionControlBox : Inherits Control
  1470.  
  1471.     Sub New()
  1472.         MyBase.New()
  1473.         DoubleBuffered = True
  1474.         SetStyle(ControlStyles.AllPaintingInWmPaint, True)
  1475.         SetStyle(ControlStyles.UserPaint, True)
  1476.         SetStyle(ControlStyles.SupportsTransparentBackColor, True)
  1477.         SetStyle(ControlStyles.ResizeRedraw, True)
  1478.         SetStyle(ControlStyles.OptimizedDoubleBuffer, True)
  1479.         ForeColor = Color.White
  1480.         BackColor = Color.Transparent
  1481.         Anchor = AnchorStyles.Top Or AnchorStyles.Right
  1482.     End Sub
  1483.     Protected Overrides Sub OnResize(e As EventArgs)
  1484.         MyBase.OnResize(e)
  1485.         Size = New Size(60, 25)
  1486.     End Sub
  1487.     Enum ButtonHover
  1488.         Minimize
  1489.         Maximize
  1490.         Close
  1491.         None
  1492.     End Enum
  1493.     Dim ButtonState As ButtonHover = ButtonHover.None
  1494.     Protected Overrides Sub OnMouseMove(e As MouseEventArgs)
  1495.         MyBase.OnMouseMove(e)
  1496.         Dim X As Integer = e.Location.X
  1497.         Dim Y As Integer = e.Location.Y
  1498.         If Y > 0 AndAlso Y < (Height - 2) Then
  1499.             If X > 0 AndAlso X < 30 Then
  1500.                 ButtonState = ButtonHover.Minimize
  1501.             ElseIf X > 31 AndAlso X < Width Then
  1502.                 ButtonState = ButtonHover.Close
  1503.             Else
  1504.                 ButtonState = ButtonHover.None
  1505.             End If
  1506.         Else
  1507.             ButtonState = ButtonHover.None
  1508.         End If
  1509.         Invalidate()
  1510.     End Sub
  1511.     Protected Overrides Sub OnPaint(e As PaintEventArgs)
  1512.         Dim B As New Bitmap(Width, Height)
  1513.         Dim G As Graphics = Graphics.FromImage(B)
  1514.         G.TextRenderingHint = TextRenderingHint.ClearTypeGridFit
  1515.         MyBase.OnPaint(e)
  1516.  
  1517.         G.Clear(BackColor)
  1518.         Dim ButtonFont As New Font("Marlett", 10.0F)
  1519.         G.DrawString("r", ButtonFont, New SolidBrush(Color.FromArgb(200, 200, 200)), New Point(Width - 16, 7), New StringFormat With {.Alignment = StringAlignment.Center})
  1520.         G.DrawString("0", ButtonFont, New SolidBrush(Color.FromArgb(200, 200, 200)), New Point(20, 7), New StringFormat With {.Alignment = StringAlignment.Center})
  1521.  
  1522.         Select Case ButtonState
  1523.             Case ButtonHover.Minimize
  1524.                 G.DrawString("0", ButtonFont, New SolidBrush(Color.White), New Point(20, 7), New StringFormat With {.Alignment = StringAlignment.Center})
  1525.             Case ButtonHover.Close
  1526.                 G.DrawString("r", ButtonFont, New SolidBrush(Color.White), New Point(Width - 16, 7), New StringFormat With {.Alignment = StringAlignment.Center})
  1527.         End Select
  1528.  
  1529.  
  1530.  
  1531.         e.Graphics.DrawImage(B, New Point(0, 0))
  1532.         G.Dispose() : B.Dispose()
  1533.     End Sub
  1534.     Protected Overrides Sub OnMouseUp(e As MouseEventArgs)
  1535.         MyBase.OnMouseDown(e)
  1536.         Select Case ButtonState
  1537.             Case ButtonHover.Close
  1538.                 Parent.FindForm().Close()
  1539.             Case ButtonHover.Minimize
  1540.                 Parent.FindForm().WindowState = FormWindowState.Minimized
  1541.             Case ButtonHover.Maximize
  1542.                 Parent.FindForm().WindowState = FormWindowState.Maximized
  1543.         End Select
  1544.         Invalidate()
  1545.     End Sub
  1546.     Protected Overrides Sub OnMouseLeave(e As EventArgs)
  1547.         MyBase.OnMouseLeave(e)
  1548.         ButtonState = ButtonHover.None : Invalidate()
  1549.     End Sub
  1550. End Class
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement