1. AMMAR AL-SHAMI

    AMMAR AL-SHAMI Developer

    الأنتساب:
    ‏9 ابريل 2015
    المشاركات:
    148
    الإعجابات المتلقاة:
    2
    نقاط الجائزة:
    18
    الوظيفة:
    طالب جامعي
    [​IMG]

    السلام عليكم ورحمه الله وبركاته والصلاه والسلام على رسولنا محمد واله وكل من اتبعه ومشى على هداه


    [​IMG]


    ثيم جميل جدا . لتجميل المشاريع اضافه الى العديد من الادوات الجديده التي تخدم مشاريعك الاحترافيه .


    [​IMG]

    الادوات التي يتحيها الثيم .... جميعها ....


    [​IMG]




    [​IMG]



    زر بوتون متاح بلونان button


    [​IMG]




    [​IMG]


    بروغرس بار بشكل رائع progress bar


    http://www.iq-team.org/up/imagef-143224669876347-png.html


    [​IMG]


    اداه تشات لاضافه الجماليه


    [​IMG]


    [​IMG]


    اداه progress indicator

    http://www.iq-team.org/up/imagef-143224669851784-png.html

    [​IMG]


    اترك لكم الباقي لاستكشافه ي غوالي ....

    [​IMG]
     
  2. AMMAR AL-SHAMI

    AMMAR AL-SHAMI Developer

    الأنتساب:
    ‏9 ابريل 2015
    المشاركات:
    148
    الإعجابات المتلقاة:
    2
    نقاط الجائزة:
    18
    الوظيفة:
    طالب جامعي
    رد: جمل مشاريعك بثيم رائع جدا .

    اعتذر جدا جدا ي غوالي تفضلوا الكلاس


    [INFO]#Region " Imports "

    Imports System.Drawing.Drawing2D
    Imports System.ComponentModel
    Imports System.Runtime.InteropServices
    Imports System.Drawing.Text

    #End Region
    #Region " RoundRect "

    ' [CREDIT][DO NOT REMOVE]
    '
    ' This module was written by Aeonhack
    '
    ' [CREDIT][DO NOT REMOVE]

    Module RoundRectangle
    Public Function RoundRect(ByVal Rectangle As Rectangle, ByVal Curve As Integer) As GraphicsPath
    Dim GP As GraphicsPath = New GraphicsPath()
    Dim EndArcWidth As Integer = Curve * 2
    GP.AddArc(New Rectangle(Rectangle.X, Rectangle.Y, EndArcWidth, EndArcWidth), -180, 90)
    GP.AddArc(New Rectangle(Rectangle.Width - EndArcWidth + Rectangle.X, Rectangle.Y, EndArcWidth, EndArcWidth), -90, 90)
    GP.AddArc(New Rectangle(Rectangle.Width - EndArcWidth + Rectangle.X, Rectangle.Height - EndArcWidth + Rectangle.Y, EndArcWidth, EndArcWidth), 0, 90)
    GP.AddArc(New Rectangle(Rectangle.X, Rectangle.Height - EndArcWidth + Rectangle.Y, EndArcWidth, EndArcWidth), 90, 90)
    GP.AddLine(New Point(Rectangle.X, Rectangle.Height - EndArcWidth + Rectangle.Y), New Point(Rectangle.X, Curve + Rectangle.Y))
    Return GP
    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 GP As GraphicsPath = New GraphicsPath()
    Dim EndArcWidth As Integer = Curve * 2
    GP.AddArc(New Rectangle(Rectangle.X, Rectangle.Y, EndArcWidth, EndArcWidth), -180, 90)
    GP.AddArc(New Rectangle(Rectangle.Width - EndArcWidth + Rectangle.X, Rectangle.Y, EndArcWidth, EndArcWidth), -90, 90)
    GP.AddArc(New Rectangle(Rectangle.Width - EndArcWidth + Rectangle.X, Rectangle.Height - EndArcWidth + Rectangle.Y, EndArcWidth, EndArcWidth), 0, 90)
    GP.AddArc(New Rectangle(Rectangle.X, Rectangle.Height - EndArcWidth + Rectangle.Y, EndArcWidth, EndArcWidth), 90, 90)
    GP.AddLine(New Point(Rectangle.X, Rectangle.Height - EndArcWidth + Rectangle.Y), New Point(Rectangle.X, Curve + Rectangle.Y))
    Return GP
    End Function
    End Module

    #End Region

    '|------DO-NOT-REMOVE------|
    '
    ' Creator: HazelDev
    ' Site : HazelDev.co.nr
    ' Created: 23.Jul.2014
    ' Changed: 31.Aug.2014
    ' Version: 1.2.0
    '
    '|------DO-NOT-REMOVE------|

    #Region " Control Renderer "

    #Region " Color Table "

    Public MustInherit Class xColorTable
    Public MustOverride ReadOnly Property TextColor As Color
    Public MustOverride ReadOnly Property Background As Color
    Public MustOverride ReadOnly Property SelectionBorder As Color
    Public MustOverride ReadOnly Property SelectionTopGradient As Color
    Public MustOverride ReadOnly Property SelectionMidGradient As Color
    Public MustOverride ReadOnly Property SelectionBottomGradient As Color
    Public MustOverride ReadOnly Property PressedBackground As Color
    Public MustOverride ReadOnly Property CheckedBackground As Color
    Public MustOverride ReadOnly Property CheckedSelectedBackground As Color
    Public MustOverride ReadOnly Property DropdownBorder As Color
    Public MustOverride ReadOnly Property Arrow As Color
    Public MustOverride ReadOnly Property OverflowBackground As Color
    End Class

    Public MustInherit Class ColorTable
    Public MustOverride ReadOnly Property CommonColorTable As xColorTable
    Public MustOverride ReadOnly Property BackgroundTopGradient As Color
    Public MustOverride ReadOnly Property BackgroundBottomGradient As Color
    Public MustOverride ReadOnly Property DroppedDownItemBackground As Color
    Public MustOverride ReadOnly Property DropdownTopGradient As Color
    Public MustOverride ReadOnly Property DropdownBottomGradient As Color
    Public MustOverride ReadOnly Property Separator As Color
    Public MustOverride ReadOnly Property ImageMargin As Color
    End Class

    Public Class MSColorTable
    Inherits ColorTable

    Private _CommonColorTable As xColorTable

    Public Sub New()
    _CommonColorTable = New DefaultCColorTable()
    End Sub

    Public Overrides ReadOnly Property CommonColorTable As xColorTable
    Get
    Return _CommonColorTable
    End Get
    End Property

    Public Overrides ReadOnly Property BackgroundTopGradient As System.Drawing.Color
    Get
    Return Color.FromArgb(246, 246, 246)
    End Get
    End Property

    Public Overrides ReadOnly Property BackgroundBottomGradient As System.Drawing.Color
    Get
    Return Color.FromArgb(226, 226, 226)
    End Get
    End Property

    Public Overrides ReadOnly Property DropdownTopGradient As System.Drawing.Color
    Get
    Return Color.FromArgb(246, 246, 246)
    End Get
    End Property

    Public Overrides ReadOnly Property DropdownBottomGradient As System.Drawing.Color
    Get
    Return Color.FromArgb(246, 246, 246)
    End Get
    End Property

    Public Overrides ReadOnly Property DroppedDownItemBackground As System.Drawing.Color
    Get
    Return Color.FromArgb(240, 240, 240)
    End Get
    End Property

    Public Overrides ReadOnly Property Separator As System.Drawing.Color
    Get
    Return Color.FromArgb(190, 195, 203)
    End Get
    End Property

    Public Overrides ReadOnly Property ImageMargin As System.Drawing.Color
    Get
    Return Color.FromArgb(240, 240, 240)
    End Get
    End Property
    End Class

    Public Class DefaultCColorTable
    Inherits xColorTable

    Public Overrides ReadOnly Property CheckedBackground As System.Drawing.Color
    Get
    Return Color.FromArgb(230, 230, 230)
    End Get
    End Property

    Public Overrides ReadOnly Property CheckedSelectedBackground As System.Drawing.Color
    Get
    Return Color.FromArgb(230, 230, 230)
    End Get
    End Property

    Public Overrides ReadOnly Property SelectionBorder As System.Drawing.Color
    Get
    Return Color.FromArgb(180, 180, 180)
    End Get
    End Property

    Public Overrides ReadOnly Property SelectionTopGradient As System.Drawing.Color
    Get
    Return Color.FromArgb(240, 240, 240)
    End Get
    End Property

    Public Overrides ReadOnly Property SelectionMidGradient As System.Drawing.Color
    Get
    Return Color.FromArgb(235, 235, 235)
    End Get
    End Property

    Public Overrides ReadOnly Property SelectionBottomGradient As System.Drawing.Color
    Get
    Return Color.FromArgb(230, 230, 230)
    End Get
    End Property

    Public Overrides ReadOnly Property PressedBackground As System.Drawing.Color
    Get
    Return Color.FromArgb(232, 232, 232)
    End Get
    End Property

    Public Overrides ReadOnly Property TextColor As System.Drawing.Color
    Get
    Return Color.FromArgb(80, 80, 80)
    End Get
    End Property

    Public Overrides ReadOnly Property Background As System.Drawing.Color
    Get
    Return Color.FromArgb(188, 199, 216)
    End Get
    End Property

    Public Overrides ReadOnly Property DropdownBorder As System.Drawing.Color
    Get
    Return Color.LightGray
    End Get
    End Property

    Public Overrides ReadOnly Property Arrow As System.Drawing.Color
    Get
    Return Color.Black
    End Get
    End Property

    Public Overrides ReadOnly Property OverflowBackground As System.Drawing.Color
    Get
    Return Color.FromArgb(213, 220, 232)
    End Get
    End Property
    End Class

    #End Region
    #Region " Renderer "

    Public Class ControlRenderer
    Inherits ToolStripProfessionalRenderer

    Public Sub New()
    Me.New(New MSColorTable())
    End Sub

    Public Sub New(ByVal ColorTable As ColorTable)
    Me.ColorTable = ColorTable
    End Sub

    Private _ColorTable As ColorTable
    Public Overloads Property ColorTable() As ColorTable
    Get
    If _ColorTable Is Nothing Then
    _ColorTable = New MSColorTable()
    End If
    Return _ColorTable
    End Get
    Set(ByVal value As ColorTable)
    _ColorTable = value
    End Set
    End Property

    Protected Overrides Sub OnRenderToolStripBackground(ByVal e As System.Windows.Forms.ToolStripRenderEventArgs)
    MyBase.OnRenderToolStripBackground(e)

    ' Menu strip bar gradient
    Using LGB As New LinearGradientBrush(e.AffectedBounds, Me.ColorTable.BackgroundTopGradient, Me.ColorTable.BackgroundBottomGradient, LinearGradientMode.Vertical)
    e.Graphics.FillRectangle(LGB, e.AffectedBounds)
    End Using
    End Sub

    Protected Overrides Sub OnRenderToolStripBorder(ByVal e As System.Windows.Forms.ToolStripRenderEventArgs)
    If e.ToolStrip.Parent Is Nothing Then
    ' Draw border around the menu drop-down
    Dim Rect As New Rectangle(0, 0, e.ToolStrip.Width - 1, e.ToolStrip.Height - 1)
    Using P1 As New Pen(Me.ColorTable.CommonColorTable.DropdownBorder)
    e.Graphics.DrawRectangle(P1, Rect)
    End Using

    ' Fill the gap between menu drop-down and owner item
    Using B1 As New SolidBrush(Me.ColorTable.DroppedDownItemBackground)
    e.Graphics.FillRectangle(B1, e.ConnectedArea)
    End Using
    End If
    End Sub

    Protected Overrides Sub OnRenderMenuItemBackground(ByVal e As System.Windows.Forms.ToolStripItemRenderEventArgs)
    If e.Item.Enabled Then
    If e.Item.Selected Then
    If Not e.Item.IsOnDropDown Then
    Dim SelRect As New Rectangle(0, 0, e.Item.Width - 1, e.Item.Height - 1)
    RectDrawing.DrawSelection(e.Graphics, Me.ColorTable.CommonColorTable, SelRect)
    Else
    Dim SelRect As New Rectangle(2, 0, e.Item.Width - 4, e.Item.Height - 1)
    RectDrawing.DrawSelection(e.Graphics, Me.ColorTable.CommonColorTable, SelRect)
    End If
    End If

    If CType(e.Item, ToolStripMenuItem).DropDown.Visible AndAlso Not e.Item.IsOnDropDown Then
    Dim BorderRect As New Rectangle(0, 0, e.Item.Width - 1, e.Item.Height)
    ' Fill the background
    Dim BackgroundRect As New Rectangle(1, 1, e.Item.Width - 2, e.Item.Height + 2)
    Using B1 As New SolidBrush(Me.ColorTable.DroppedDownItemBackground)
    e.Graphics.FillRectangle(B1, BackgroundRect)
    End Using

    ' Draw border
    Using P1 As New Pen(Me.ColorTable.CommonColorTable.DropdownBorder)
    RectDrawing.DrawRoundedRectangle(e.Graphics, P1, BorderRect.X, BorderRect.Y, BorderRect.Width, BorderRect.Height, 2)
    End Using
    End If
    e.Item.ForeColor = Me.ColorTable.CommonColorTable.TextColor
    End If
    End Sub

    Protected Overrides Sub OnRenderItemText(ByVal e As System.Windows.Forms.ToolStripItemTextRenderEventArgs)
    e.TextColor = Me.ColorTable.CommonColorTable.TextColor
    MyBase.OnRenderItemText(e)
    End Sub

    Protected Overrides Sub OnRenderItemCheck(ByVal e As System.Windows.Forms.ToolStripItemImageRenderEventArgs)
    MyBase.OnRenderItemCheck(e)

    Dim rect As New Rectangle(3, 1, e.Item.Height - 3, e.Item.Height - 3)
    Dim c As Color

    If e.Item.Selected Then
    c = Me.ColorTable.CommonColorTable.CheckedSelectedBackground
    Else
    c = Me.ColorTable.CommonColorTable.CheckedBackground
    End If

    Using b As New SolidBrush(c)
    e.Graphics.FillRectangle(b, rect)
    End Using

    Using p As New Pen(Me.ColorTable.CommonColorTable.SelectionBorder)
    e.Graphics.DrawRectangle(p, rect)
    End Using

    e.Graphics.DrawString("ü", New Font("Wingdings", 13, FontStyle.Regular), Brushes.Black, New Point(4, 2))
    End Sub

    Protected Overrides Sub OnRenderSeparator(ByVal e As System.Windows.Forms.ToolStripSeparatorRenderEventArgs)
    MyBase.OnRenderSeparator(e)
    Dim PT1 As Integer = 28
    Dim PT2 As Integer = e.Item.Width
    Dim Y As Integer = 3
    Using P1 As New Pen(Me.ColorTable.Separator)
    e.Graphics.DrawLine(P1, PT1, Y, PT2, Y)
    End Using
    End Sub

    Protected Overrides Sub OnRenderImageMargin(ByVal e As System.Windows.Forms.ToolStripRenderEventArgs)
    MyBase.OnRenderImageMargin(e)

    Dim BackgroundRect As New Rectangle(0, -1, e.ToolStrip.Width, e.ToolStrip.Height + 1)
    Using LGB As New LinearGradientBrush(BackgroundRect,
    Me.ColorTable.DropdownTopGradient,
    Me.ColorTable.DropdownBottomGradient,
    LinearGradientMode.Vertical)
    e.Graphics.FillRectangle(LGB, BackgroundRect)
    End Using

    Using B1 As New SolidBrush(Me.ColorTable.ImageMargin)
    e.Graphics.FillRectangle(B1, e.AffectedBounds)
    End Using
    End Sub

    Protected Overrides Sub OnRenderButtonBackground(ByVal e As System.Windows.Forms.ToolStripItemRenderEventArgs)
    Dim rect As New Rectangle(0, 0, e.Item.Width - 1, e.Item.Height - 1)
    Dim checked As Boolean = CType(e.Item, ToolStripButton).Checked
    Dim drawBorder As Boolean = False

    If checked Then
    drawBorder = True

    If e.Item.Selected AndAlso Not e.Item.Pressed Then
    Using b As New SolidBrush(Me.ColorTable.CommonColorTable.CheckedSelectedBackground)
    e.Graphics.FillRectangle(b, rect)
    End Using
    Else
    Using b As New SolidBrush(Me.ColorTable.CommonColorTable.CheckedBackground)
    e.Graphics.FillRectangle(b, rect)
    End Using
    End If

    Else

    If e.Item.Pressed Then
    drawBorder = True
    Using b As New SolidBrush(Me.ColorTable.CommonColorTable.PressedBackground)
    e.Graphics.FillRectangle(b, rect)
    End Using
    ElseIf e.Item.Selected Then
    drawBorder = True
    RectDrawing.DrawSelection(e.Graphics, Me.ColorTable.CommonColorTable, rect)
    End If

    End If

    If drawBorder Then
    Using p As New Pen(Me.ColorTable.CommonColorTable.SelectionBorder)
    e.Graphics.DrawRectangle(p, rect)
    End Using
    End If
    End Sub

    Protected Overrides Sub OnRenderDropDownButtonBackground(ByVal e As System.Windows.Forms.ToolStripItemRenderEventArgs)
    Dim rect As New Rectangle(0, 0, e.Item.Width - 1, e.Item.Height - 1)
    Dim drawBorder As Boolean = False

    If e.Item.Pressed Then
    drawBorder = True
    Using b As New SolidBrush(Me.ColorTable.CommonColorTable.PressedBackground)
    e.Graphics.FillRectangle(b, rect)
    End Using
    ElseIf e.Item.Selected Then
    drawBorder = True
    RectDrawing.DrawSelection(e.Graphics, Me.ColorTable.CommonColorTable, rect)
    End If

    If drawBorder Then
    Using p As New Pen(Me.ColorTable.CommonColorTable.SelectionBorder)
    e.Graphics.DrawRectangle(p, rect)
    End Using
    End If
    End Sub

    Protected Overrides Sub OnRenderSplitButtonBackground(ByVal e As System.Windows.Forms.ToolStripItemRenderEventArgs)
    MyBase.OnRenderSplitButtonBackground(e)

    Dim drawBorder As Boolean = False
    Dim drawSeparator As Boolean = True

    Dim item = DirectCast(e.Item, ToolStripSplitButton)

    Dim btnRect As New Rectangle(0, 0, item.ButtonBounds.Width - 1, item.ButtonBounds.Height - 1)
    Dim borderRect As New Rectangle(0, 0, item.Bounds.Width - 1, item.Bounds.Height - 1)

    If item.DropDownButtonPressed Then
    drawBorder = True
    drawSeparator = False
    Using b As New SolidBrush(Me.ColorTable.CommonColorTable.PressedBackground)
    e.Graphics.FillRectangle(b, borderRect)
    End Using
    ElseIf item.DropDownButtonSelected Then
    drawBorder = True
    RectDrawing.DrawSelection(e.Graphics, Me.ColorTable.CommonColorTable, borderRect)
    End If

    If item.ButtonPressed Then
    Using b As New SolidBrush(Me.ColorTable.CommonColorTable.PressedBackground)
    e.Graphics.FillRectangle(b, btnRect)
    End Using
    End If

    If drawBorder Then
    Using p As New Pen(Me.ColorTable.CommonColorTable.SelectionBorder)
    e.Graphics.DrawRectangle(p, borderRect)
    If drawSeparator Then e.Graphics.DrawRectangle(p, btnRect)
    End Using

    Me.DrawCustomArrow(e.Graphics, item)
    End If
    End Sub

    Private Sub DrawCustomArrow(ByVal g As Graphics, ByVal item As ToolStripSplitButton)
    Dim dropWidth As Integer = item.DropDownButtonBounds.Width - 1
    Dim dropHeight As Integer = item.DropDownButtonBounds.Height - 1
    Dim triangleWidth As Single = dropWidth / 2.0F + 1
    Dim triangleLeft As Single = item.DropDownButtonBounds.Left + (dropWidth - triangleWidth) / 2.0F
    Dim triangleHeight As Single = triangleWidth / 2.0F
    Dim triangleTop As Single = item.DropDownButtonBounds.Top + (dropHeight - triangleHeight) / 2.0F + 1
    Dim arrowRect As New RectangleF(triangleLeft, triangleTop, triangleWidth, triangleHeight)

    Me.DrawCustomArrow(g, item, Rectangle.Round(arrowRect))
    End Sub

    Private Sub DrawCustomArrow(ByVal g As Graphics, ByVal item As ToolStripItem, ByVal rect As Rectangle)
    Dim arrowEventArgs As New ToolStripArrowRenderEventArgs(g, _
    item, _
    rect, _
    Me.ColorTable.CommonColorTable.Arrow, _
    ArrowDirection.Down)
    MyBase.OnRenderArrow(arrowEventArgs)
    End Sub

    Protected Overrides Sub OnRenderOverflowButtonBackground(ByVal e As System.Windows.Forms.ToolStripItemRenderEventArgs)
    Dim rect, rectEnd As Rectangle
    rect = New Rectangle(0, 0, e.Item.Width - 1, e.Item.Height - 2)
    rectEnd = New Rectangle(rect.X - 5, rect.Y, rect.Width - 5, rect.Height)

    If e.Item.Pressed Then
    Using b As New SolidBrush(Me.ColorTable.CommonColorTable.PressedBackground)
    e.Graphics.FillRectangle(b, rect)
    End Using
    ElseIf e.Item.Selected Then
    RectDrawing.DrawSelection(e.Graphics, Me.ColorTable.CommonColorTable, rect)
    Else
    Using b As New SolidBrush(Me.ColorTable.CommonColorTable.OverflowBackground)
    e.Graphics.FillRectangle(b, rect)
    End Using
    End If

    Using P1 As New Pen(Me.ColorTable.CommonColorTable.Background)
    RectDrawing.DrawRoundedRectangle(e.Graphics, P1, rectEnd.X, rectEnd.Y, rectEnd.Width, rectEnd.Height, 3)
    End Using

    ' Icon
    Dim w As Integer = rect.Width - 1
    Dim h As Integer = rect.Height - 1
    Dim triangleWidth As Single = w / 2.0F + 1
    Dim triangleLeft As Single = rect.Left + (w - triangleWidth) / 2.0F + 3
    Dim triangleHeight As Single = triangleWidth / 2.0F
    Dim triangleTop As Single = rect.Top + (h - triangleHeight) / 2.0F + 7
    Dim arrowRect As New RectangleF(triangleLeft, triangleTop, triangleWidth, triangleHeight)
    Me.DrawCustomArrow(e.Graphics, e.Item, Rectangle.Round(arrowRect))

    Using p As New Pen(Me.ColorTable.CommonColorTable.Arrow)
    e.Graphics.DrawLine(p, triangleLeft + 2, triangleTop - 2, triangleLeft + triangleWidth - 2, triangleTop - 2)
    End Using
    End Sub
    End Class

    #End Region
    #Region " Drawing "

    Public Class RectDrawing

    Public Shared Sub DrawSelection(ByVal G As Graphics, _
    ByVal ColorTable As xColorTable, _
    ByVal Rect As Rectangle)
    Dim TopRect As Rectangle
    Dim BottomRect As Rectangle
    Dim FillRect As New Rectangle(Rect.X + 1, Rect.Y + 1, Rect.Width - 1, Rect.Height - 1)

    TopRect = FillRect
    TopRect.Height -= CInt(TopRect.Height / 2)
    BottomRect = New Rectangle(TopRect.X, TopRect.Bottom, TopRect.Width, FillRect.Height - TopRect.Height)

    ' Top gradient
    Using LGB As New LinearGradientBrush(TopRect, ColorTable.SelectionTopGradient, ColorTable.SelectionMidGradient, LinearGradientMode.Vertical)
    G.FillRectangle(LGB, TopRect)
    End Using

    ' Bottom
    Using B1 As New SolidBrush(ColorTable.SelectionBottomGradient)
    G.FillRectangle(B1, BottomRect)
    End Using

    ' Border
    Using P1 As New Pen(ColorTable.SelectionBorder)
    RectDrawing.DrawRoundedRectangle(G, P1, Rect.X, Rect.Y, Rect.Width, Rect.Height, 2)
    End Using
    End Sub

    Public Shared Sub DrawRoundedRectangle(ByVal G As Graphics, _
    ByVal P As Pen, _
    ByVal X As Single, _
    ByVal Y As Single, _
    ByVal W As Single, _
    ByVal H As Single, _
    ByVal Rad As Single)

    Using gp As New GraphicsPath()
    gp.AddLine(X + Rad, Y, X + W - (Rad * 2), Y)
    gp.AddArc(X + W - (Rad * 2), Y, Rad * 2, Rad * 2, 270, 90)
    gp.AddLine(X + W, Y + Rad, X + W, Y + H - (Rad * 2))
    gp.AddArc(X + W - (Rad * 2), Y + H - (Rad * 2), Rad * 2, Rad * 2, 0, 90)
    gp.AddLine(X + W - (Rad * 2), Y + H, X + Rad, Y + H)
    gp.AddArc(X, Y + H - (Rad * 2), Rad * 2, Rad * 2, 90, 90)
    gp.AddLine(X, Y + H - (Rad * 2), X, Y + Rad)
    gp.AddArc(X, Y, Rad * 2, Rad * 2, 180, 90)
    gp.CloseFigure()

    G.SmoothingMode = SmoothingMode.AntiAlias
    G.DrawPath(P, gp)
    G.SmoothingMode = SmoothingMode.Default
    End Using
    End Sub
    End Class

    #End Region

    #End Region
    #Region " ThemeContainer "

    Public Class iTalk_ThemeContainer
    Inherits ContainerControl

    #Region " Variables "

    Private MouseP As Point = New Point(0, 0)
    Private Cap As Boolean = False
    Private MoveHeight As Integer
    Private _TextBottom As String = Nothing
    Const BorderCurve As Integer = 7

    #End Region
    #Region " Properties "

    Property TextBottom() As String
    Get
    Return _TextBottom
    End Get
    Set(ByVal value As String)
    _TextBottom = value
    Invalidate()
    End Set
    End Property

    #End Region
    #Region " EventArgs "

    Protected Overrides Sub OnMouseDown(ByVal e As System.Windows.Forms.MouseEventArgs)
    MyBase.OnMouseDown(e)
    If e.Button = Windows.Forms.MouseButtons.Left And New Rectangle(0, 0, Width, MoveHeight).Contains(e.Location) Then
    Cap = True
    MouseP = e.Location
    End If
    End Sub

    Protected Overrides Sub OnMouseUp(ByVal e As System.Windows.Forms.MouseEventArgs)
    MyBase.OnMouseUp(e)
    Cap = False
    End Sub

    Protected Overrides Sub OnMouseMove(ByVal e As System.Windows.Forms.MouseEventArgs)
    MyBase.OnMouseMove(e)
    If Cap Then
    Parent.Location = MousePosition - MouseP
    End If
    End Sub

    Protected Overrides Sub OnInvalidated(ByVal e As System.Windows.Forms.InvalidateEventArgs)
    MyBase.OnInvalidated(e)
    ParentForm.FindForm.Text = Text
    End Sub

    Protected Overrides Sub OnPaintBackground(e As PaintEventArgs)
    MyBase.OnPaintBackground(e)
    End Sub

    Protected Overrides Sub OnTextChanged(ByVal e As System.EventArgs)
    MyBase.OnTextChanged(e)
    Invalidate()
    End Sub

    #End Region

    Protected Overrides Sub OnCreateControl()
    MyBase.OnCreateControl()
    Me.ParentForm.FormBorderStyle = FormBorderStyle.None
    Me.ParentForm.TransparencyKey = Color.Fuchsia
    End Sub

    Protected Overrides Sub CreateHandle()
    MyBase.CreateHandle()
    End Sub

    Sub New()
    MyBase.New()
    SetStyle(DirectCast(139270, ControlStyles), True)
    Dock = DockStyle.Fill
    MoveHeight = 25
    Padding = New Padding(5, 28, 5, 29)
    Font = New Font("Segoe UI", 8, FontStyle.Regular)
    ForeColor = Color.FromArgb(142, 142, 142)
    BackColor = Color.FromArgb(246, 246, 246)
    DoubleBuffered = True
    End Sub

    Protected Overrides Sub OnPaint(ByVal e As System.Windows.Forms.PaintEventArgs)
    MyBase.OnPaint(e)

    Dim B As New Bitmap(Width, Height)
    Dim G As Graphics = Graphics.FromImage(B)
    Dim ClientRectangle As New Rectangle(0, 0, Width - 1, Height - 1)
    Dim TransparencyKey As Color = Me.ParentForm.TransparencyKey

    G.SmoothingMode = SmoothingMode.Default
    G.Clear(TransparencyKey)

    ' Draw the container borders
    G.FillPath(New SolidBrush(Color.FromArgb(52, 52, 52)), RoundRectangle.RoundRect(ClientRectangle, BorderCurve))
    ' Draw a rectangle in which the controls should be added on
    G.FillPath(New SolidBrush(Color.FromArgb(246, 246, 246)), RoundRectangle.RoundRect(New Rectangle(2, 20, Width - 5, Height - 42), BorderCurve))

    ' Patch the header with a rectangle that has a curve so its border will remain within container bounds
    G.FillPath(New SolidBrush(Color.FromArgb(52, 52, 52)), RoundRectangle.RoundRect(New Rectangle(2, 2, Width / 2 + 2, 16), BorderCurve))
    G.FillPath(New SolidBrush(Color.FromArgb(52, 52, 52)), RoundRectangle.RoundRect(New Rectangle(Width / 2 - 3, 2, Width / 2, 16), BorderCurve))
    ' Fill the header rectangle below the patch
    G.FillRectangle(New SolidBrush(Color.FromArgb(52, 52, 52)), New Rectangle(2, 15, Width - 5, 10))

    ' Increase the thickness of the container borders
    G.DrawPath(New Pen(Color.FromArgb(52, 52, 52)), RoundRectangle.RoundRect(New Rectangle(2, 2, Width - 5, Height - 5), BorderCurve))
    G.DrawPath(New Pen(Color.FromArgb(52, 52, 52)), RoundRectangle.RoundRect(ClientRectangle, BorderCurve))

    ' Draw the string from the specified 'Text' property on the header rectangle
    G.DrawString(Text, New Font("Trebuchet MS", 10, FontStyle.Bold), New SolidBrush(Color.FromArgb(221, 221, 221)), New Rectangle(BorderCurve, BorderCurve - 4, Width - 1, 22), New StringFormat() With {.Alignment = StringAlignment.Center, .LineAlignment = StringAlignment.Near})


    ' Draws a rectangle at the bottom of the container
    G.FillRectangle(New SolidBrush(Color.FromArgb(52, 52, 52)), 0, Height - 25, Width - 3, 22 - 2)
    G.DrawLine(New Pen(Color.FromArgb(52, 52, 52)), 5, Height - 5, Width - 6, Height - 5)
    G.DrawLine(New Pen(Color.FromArgb(52, 52, 52)), 7, Height - 4, Width - 7, Height - 4)

    G.DrawString(_TextBottom, New Font("Trebuchet MS", 10, FontStyle.Bold), New SolidBrush(Color.FromArgb(221, 221, 221)), 5, Height - 23)

    e.Graphics.DrawImage(B.Clone(), 0, 0)
    G.Dispose()
    B.Dispose()
    End Sub
    End Class

    #End Region
    #Region " ControlBox "

    Public Class iTalk_ControlBox
    Inherits Control

    #Region " Enums "

    Enum MouseState As Byte
    None = 0
    Over = 1
    Down = 2
    Block = 3
    End Enum

    #End Region
    #Region " Variables "

    Dim State As MouseState = MouseState.None
    Dim i As Integer
    Dim CloseRect As New Rectangle(28, 0, 47, 18)
    Dim MinimizeRect As New Rectangle(0, 0, 28, 18)

    #End Region
    #Region " EventArgs "

    Protected Overrides Sub OnMouseClick(e As MouseEventArgs)
    MyBase.OnMouseClick(e)

    If i > 0 And i < 28 Then
    FindForm.WindowState = FormWindowState.Minimized
    ElseIf i > 30 And i < 75 Then
    FindForm.Close()
    End If

    State = MouseState.Down
    End Sub

    Protected Overrides Sub OnMouseEnter(ByVal e As System.EventArgs)
    MyBase.OnMouseEnter(e)
    State = MouseState.Over
    Invalidate()
    End Sub

    Protected Overrides Sub OnMouseLeave(ByVal e As System.EventArgs)
    MyBase.OnMouseLeave(e)
    State = MouseState.None
    Invalidate()
    End Sub

    Protected Overrides Sub OnMouseUp(ByVal e As System.Windows.Forms.MouseEventArgs)
    MyBase.OnMouseUp(e)
    State = MouseState.Over
    Invalidate()
    End Sub

    Protected Overrides Sub OnMouseMove(ByVal e As System.Windows.Forms.MouseEventArgs)
    MyBase.OnMouseMove(e)
    i = e.Location.X
    Invalidate()
    End Sub

    Protected Overrides Sub OnResize(e As EventArgs)
    MyBase.OnResize(e)
    Width = 77
    Height = 19
    End Sub

    #End Region

    Sub New()
    SetStyle(ControlStyles.SupportsTransparentBackColor Or ControlStyles.UserPaint, True)
    BackColor = Color.Transparent
    DoubleBuffered = True
    Anchor = AnchorStyles.Top Or AnchorStyles.Right
    End Sub
    Protected Overrides Sub OnCreateControl()
    MyBase.OnCreateControl()
    Location = New Point(FindForm.Width - 81, -1) ' Auto-decide control location on the theme container
    End Sub

    Protected Overrides Sub OnPaint(ByVal e As System.Windows.Forms.PaintEventArgs)
    MyBase.OnPaint(e)

    Dim B As New Bitmap(Width, Height)
    Dim G As Graphics = Graphics.FromImage(B)
    Dim GP_MinimizeRect As New GraphicsPath
    Dim GP_CloseRect As New GraphicsPath

    GP_MinimizeRect.AddRectangle(MinimizeRect)
    GP_CloseRect.AddRectangle(CloseRect)
    G.Clear(BackColor)

    Select Case State
    Case MouseState.None
    NonePoint: Dim MinimizeGradient As New LinearGradientBrush(MinimizeRect, Color.FromArgb(73, 73, 73), Color.FromArgb(58, 58, 58), 90S)
    G.FillPath(MinimizeGradient, GP_MinimizeRect)
    G.DrawPath(New Pen(Color.FromArgb(40, 40, 40)), GP_MinimizeRect)
    G.DrawString("0", New Font("Marlett", 11, FontStyle.Regular), New SolidBrush(Color.FromArgb(221, 221, 221)), MinimizeRect.Width - 22, MinimizeRect.Height - 16)

    Dim CloseGradient As New LinearGradientBrush(CloseRect, Color.FromArgb(73, 73, 73), Color.FromArgb(58, 58, 58), 90S)
    G.FillPath(CloseGradient, GP_CloseRect)
    G.DrawPath(New Pen(Color.FromArgb(40, 40, 40)), GP_CloseRect)
    G.DrawString("r", New Font("Marlett", 11, FontStyle.Regular), New SolidBrush(Color.FromArgb(221, 221, 221)), CloseRect.Width - 4, CloseRect.Height - 16)
    Case MouseState.Over
    If i > 0 And i < 28 Then
    Dim MinimizeGradient As New LinearGradientBrush(MinimizeRect, Color.FromArgb(76, 76, 76, 76), Color.FromArgb(48, 48, 48), 90S)
    G.FillPath(MinimizeGradient, GP_MinimizeRect)
    G.DrawPath(New Pen(Color.FromArgb(40, 40, 40)), GP_MinimizeRect)
    G.DrawString("0", New Font("Marlett", 11, FontStyle.Regular), New SolidBrush(Color.FromArgb(221, 221, 221)), MinimizeRect.Width - 22, MinimizeRect.Height - 16)

    Dim CloseGradient As New LinearGradientBrush(CloseRect, Color.FromArgb(73, 73, 73), Color.FromArgb(58, 58, 58), 90S)
    G.FillPath(CloseGradient, GP_CloseRect)
    G.DrawPath(New Pen(Color.FromArgb(40, 40, 40)), GP_CloseRect)
    G.DrawString("r", New Font("Marlett", 11, FontStyle.Regular), New SolidBrush(Color.FromArgb(221, 221, 221)), CloseRect.Width - 4, CloseRect.Height - 16)
    ElseIf i > 30 And i < 75 Then
    Dim CloseGradient As New LinearGradientBrush(CloseRect, Color.FromArgb(76, 76, 76, 76), Color.FromArgb(48, 48, 48), 90S)
    G.FillPath(CloseGradient, GP_CloseRect)
    G.DrawPath(New Pen(Color.FromArgb(40, 40, 40)), GP_CloseRect)
    G.DrawString("r", New Font("Marlett", 11, FontStyle.Regular), New SolidBrush(Color.FromArgb(221, 221, 221)), CloseRect.Width - 4, CloseRect.Height - 16)

    Dim MinimizeGradient As New LinearGradientBrush(MinimizeRect, Color.FromArgb(73, 73, 73), Color.FromArgb(58, 58, 58), 90S)
    G.FillPath(MinimizeGradient, RoundRectangle.RoundRect(MinimizeRect, 1))
    G.DrawPath(New Pen(Color.FromArgb(40, 40, 40)), GP_MinimizeRect)
    G.DrawString("0", New Font("Marlett", 11, FontStyle.Regular), New SolidBrush(Color.FromArgb(221, 221, 221)), MinimizeRect.Width - 22, MinimizeRect.Height - 16)
    Else
    GoTo NonePoint ' Return to [MouseState = None]
    End If
    End Select

    e.Graphics.DrawImage(B.Clone(), 0, 0)
    G.Dispose()
    GP_CloseRect.Dispose()
    GP_MinimizeRect.Dispose()
    B.Dispose()
    End Sub
    End Class

    #End Region
    #Region " Button 1 "

    Class iTalk_Button_1
    Inherits Control

    #Region " Variables "

    Private MouseState As Integer
    Private Shape As GraphicsPath
    Private InactiveGB, PressedGB, PressedContourGB As LinearGradientBrush
    Private R1 As Rectangle
    Private P1, P3 As Pen
    Private _Image As Image
    Private _ImageSize As Size
    Private _TextAlignment As StringAlignment = StringAlignment.Center
    Private _TextColor As Color = Color.FromArgb(150, 150, 150)
    Private _ImageAlign As ContentAlignment = ContentAlignment.MiddleLeft

    #End Region
    #Region " Image Designer "

    Private Shared Function ImageLocation(ByVal SF As StringFormat, ByVal Area As SizeF, ByVal ImageArea As SizeF) As PointF
    Dim MyPoint As PointF
    Select Case SF.Alignment
    Case StringAlignment.Center
    MyPoint.X = CSng((Area.Width - ImageArea.Width) / 2)
    Case StringAlignment.Near
    MyPoint.X = 2
    Case StringAlignment.Far
    MyPoint.X = Area.Width - ImageArea.Width - 2

    End Select

    Select Case SF.LineAlignment
    Case StringAlignment.Center
    MyPoint.Y = CSng((Area.Height - ImageArea.Height) / 2)
    Case StringAlignment.Near
    MyPoint.Y = 2
    Case StringAlignment.Far
    MyPoint.Y = Area.Height - ImageArea.Height - 2
    End Select
    Return MyPoint
    End Function

    Private Function GetStringFormat(ByVal _ContentAlignment As ContentAlignment) As StringFormat
    Dim SF As StringFormat = New StringFormat()
    Select Case _ContentAlignment
    Case ContentAlignment.MiddleCenter
    SF.LineAlignment = StringAlignment.Center
    SF.Alignment = StringAlignment.Center
    Case ContentAlignment.MiddleLeft
    SF.LineAlignment = StringAlignment.Center
    SF.Alignment = StringAlignment.Near
    Case ContentAlignment.MiddleRight
    SF.LineAlignment = StringAlignment.Center
    SF.Alignment = StringAlignment.Far
    Case ContentAlignment.TopCenter
    SF.LineAlignment = StringAlignment.Near
    SF.Alignment = StringAlignment.Center
    Case ContentAlignment.TopLeft
    SF.LineAlignment = StringAlignment.Near
    SF.Alignment = StringAlignment.Near
    Case ContentAlignment.TopRight
    SF.LineAlignment = StringAlignment.Near
    SF.Alignment = StringAlignment.Far
    Case ContentAlignment.BottomCenter
    SF.LineAlignment = StringAlignment.Far
    SF.Alignment = StringAlignment.Center
    Case ContentAlignment.BottomLeft
    SF.LineAlignment = StringAlignment.Far
    SF.Alignment = StringAlignment.Near
    Case ContentAlignment.BottomRight
    SF.LineAlignment = StringAlignment.Far
    SF.Alignment = StringAlignment.Far
    End Select
    Return SF
    End Function

    #End Region
    #Region " Properties "

    Property Image() As Image
    Get
    Return _Image
    End Get
    Set(ByVal value As Image)
    If value Is Nothing Then
    _ImageSize = Size.Empty
    Else
    _ImageSize = value.Size
    End If

    _Image = value
    Invalidate()
    End Set
    End Property

    Protected ReadOnly Property ImageSize() As Size
    Get
    Return _ImageSize
    End Get
    End Property

    Public Property ImageAlign() As ContentAlignment
    Get
    Return _ImageAlign
    End Get
    Set(ByVal Value As ContentAlignment)
    _ImageAlign = Value
    Invalidate()
    End Set
    End Property

    Public Property TextAlignment As StringAlignment
    Get
    Return Me._TextAlignment
    End Get
    Set(ByVal value As StringAlignment)
    Me._TextAlignment = value
    Me.Invalidate()
    End Set
    End Property

    Public Overrides Property ForeColor As Color
    Get
    Return Me._TextColor
    End Get
    Set(ByVal value As Color)
    Me._TextColor = value
    Me.Invalidate()
    End Set
    End Property

    #End Region
    #Region " EventArgs "

    Protected Overrides Sub OnMouseUp(ByVal e As MouseEventArgs)
    MouseState = 0
    Invalidate()
    MyBase.OnMouseUp(e)
    End Sub
    Protected Overrides Sub OnMouseDown(ByVal e As MouseEventArgs)
    MouseState = 1
    Invalidate()
    MyBase.OnMouseDown(e)
    End Sub

    Protected Overrides Sub OnMouseLeave(ByVal e As EventArgs)
    MouseState = 0
    Invalidate()
    MyBase.OnMouseLeave(e)
    End Sub

    Protected Overrides Sub OnTextChanged(ByVal e As System.EventArgs)
    Invalidate()
    MyBase.OnTextChanged(e)
    End Sub

    #End Region

    Sub New()
    SetStyle(ControlStyles.AllPaintingInWmPaint Or _
    ControlStyles.OptimizedDoubleBuffer Or _
    ControlStyles.ResizeRedraw Or _
    ControlStyles.SupportsTransparentBackColor Or _
    ControlStyles.UserPaint, True)

    BackColor = Color.Transparent
    DoubleBuffered = True
    Font = New Font("Segoe UI", 12)
    ForeColor = Color.FromArgb(150, 150, 150)
    Size = New Size(166, 40)
    _TextAlignment = StringAlignment.Center
    P1 = New Pen(Color.FromArgb(190, 190, 190)) ' P1 = Border color
    End Sub

    Protected Overrides Sub OnResize(ByVal e As System.EventArgs)
    If Width > 0 AndAlso Height > 0 Then

    Shape = New GraphicsPath
    R1 = New Rectangle(0, 0, Width, Height)

    InactiveGB = New LinearGradientBrush(New Rectangle(0, 0, Width, Height), Color.FromArgb(251, 251, 251), Color.FromArgb(225, 225, 225), 90.0F)
    PressedGB = New LinearGradientBrush(New Rectangle(0, 0, Width, Height), Color.FromArgb(235, 235, 235), Color.FromArgb(223, 223, 223), 90.0F)
    PressedContourGB = New LinearGradientBrush(New Rectangle(0, 0, Width, Height), Color.FromArgb(167, 167, 167), Color.FromArgb(167, 167, 167), 90.0F)

    P3 = New Pen(PressedContourGB)
    End If

    With Shape
    .AddArc(0, 0, 10, 10, 180, 90)
    .AddArc(Width - 11, 0, 10, 10, -90, 90)
    .AddArc(Width - 11, Height - 11, 10, 10, 0, 90)
    .AddArc(0, Height - 11, 10, 10, 90, 90)
    .CloseAllFigures()
    End With

    Invalidate()
    MyBase.OnResize(e)
    End Sub

    Protected Overrides Sub OnPaint(ByVal e As PaintEventArgs)
    With e.Graphics
    .SmoothingMode = SmoothingMode.HighQuality
    Dim ipt As PointF = ImageLocation(GetStringFormat(ImageAlign), Size, ImageSize)

    Select Case MouseState
    Case 0 'Inactive
    .FillPath(InactiveGB, Shape) ' Fill button body with InactiveGB color gradient
    .DrawPath(P1, Shape) ' Draw button border [InactiveGB]
    If IsNothing(Image) Then
    ' If an image is not specified, only draw the string on the button
    .DrawString(Text, Font, New SolidBrush(ForeColor), R1, New StringFormat() With {.Alignment = _TextAlignment, .LineAlignment = StringAlignment.Center})
    Else
    ' If an image is specified, the image and draw the string on the button
    .DrawImage(_Image, ipt.X, ipt.Y, ImageSize.Width, ImageSize.Height)
    .DrawString(Text, Font, New SolidBrush(ForeColor), R1, New StringFormat() With {.Alignment = _TextAlignment, .LineAlignment = StringAlignment.Center})
    End If
    Case 1 'Pressed
    .FillPath(PressedGB, Shape) ' Fill button body with PressedGB color gradient
    .DrawPath(P3, Shape) ' Draw button border [PressedGB]

    If IsNothing(Image) Then
    ' If an image is not specified, only draw the string on the button
    .DrawString(Text, Font, New SolidBrush(ForeColor), R1, New StringFormat() With {.Alignment = _TextAlignment, .LineAlignment = StringAlignment.Center})
    Else
    ' If an image is specified, the image and draw the string on the button
    .DrawImage(_Image, ipt.X, ipt.Y, ImageSize.Width, ImageSize.Height)
    .DrawString(Text, Font, New SolidBrush(ForeColor), R1, New StringFormat() With {.Alignment = _TextAlignment, .LineAlignment = StringAlignment.Center})
    End If
    End Select
    End With
    MyBase.OnPaint(e)
    End Sub
    End Class

    #End Region
    #Region " Button 2 "

    Class iTalk_Button_2
    Inherits Control

    #Region " Variables "

    Private MouseState As Integer
    Private Shape As GraphicsPath
    Private InactiveGB, PressedGB, PressedContourGB As LinearGradientBrush
    Private R1 As Rectangle
    Private P1, P3 As Pen
    Private _Image As Image
    Private _ImageSize As Size
    Private _TextAlignment As StringAlignment = StringAlignment.Center
    Private _ImageAlign As ContentAlignment = ContentAlignment.MiddleLeft

    #End Region
    #Region " Image Designer "

    Private Shared Function ImageLocation(ByVal SF As StringFormat, ByVal Area As SizeF, ByVal ImageArea As SizeF) As PointF
    Dim MyPoint As PointF
    Select Case SF.Alignment
    Case StringAlignment.Center
    MyPoint.X = CSng((Area.Width - ImageArea.Width) / 2)
    Case StringAlignment.Near
    MyPoint.X = 2
    Case StringAlignment.Far
    MyPoint.X = Area.Width - ImageArea.Width - 2
    End Select

    Select Case SF.LineAlignment
    Case StringAlignment.Center
    MyPoint.Y = CSng((Area.Height - ImageArea.Height) / 2)
    Case StringAlignment.Near
    MyPoint.Y = 2
    Case StringAlignment.Far
    MyPoint.Y = Area.Height - ImageArea.Height - 2
    End Select
    Return MyPoint
    End Function

    Private Function GetStringFormat(ByVal _ContentAlignment As ContentAlignment) As StringFormat
    Dim SF As StringFormat = New StringFormat()
    Select Case _ContentAlignment
    Case ContentAlignment.MiddleCenter
    SF.LineAlignment = StringAlignment.Center
    SF.Alignment = StringAlignment.Center
    Case ContentAlignment.MiddleLeft
    SF.LineAlignment = StringAlignment.Center
    SF.Alignment = StringAlignment.Near
    Case ContentAlignment.MiddleRight
    SF.LineAlignment = StringAlignment.Center
    SF.Alignment = StringAlignment.Far
    Case ContentAlignment.TopCenter
    SF.LineAlignment = StringAlignment.Near
    SF.Alignment = StringAlignment.Center
    Case ContentAlignment.TopLeft
    SF.LineAlignment = StringAlignment.Near
    SF.Alignment = StringAlignment.Near
    Case ContentAlignment.TopRight
    SF.LineAlignment = StringAlignment.Near
    SF.Alignment = StringAlignment.Far
    Case ContentAlignment.BottomCenter
    SF.LineAlignment = StringAlignment.Far
    SF.Alignment = StringAlignment.Center
    Case ContentAlignment.BottomLeft
    SF.LineAlignment = StringAlignment.Far
    SF.Alignment = StringAlignment.Near
    Case ContentAlignment.BottomRight
    SF.LineAlignment = StringAlignment.Far
    SF.Alignment = StringAlignment.Far
    End Select
    Return SF
    End Function

    #End Region
    #Region " Properties "

    Property Image() As Image
    Get
    Return _Image
    End Get
    Set(ByVal value As Image)
    If value Is Nothing Then
    _ImageSize = Size.Empty
    Else
    _ImageSize = value.Size
    End If

    _Image = value
    Invalidate()
    End Set
    End Property

    Public Property TextAlignment As StringAlignment
    Get
    Return Me._TextAlignment
    End Get
    Set(ByVal value As StringAlignment)
    Me._TextAlignment = value
    Me.Invalidate()
    End Set
    End Property

    Protected ReadOnly Property ImageSize() As Size
    Get
    Return _ImageSize
    End Get
    End Property

    Public Property ImageAlign() As ContentAlignment
    Get
    Return _ImageAlign
    End Get
    Set(ByVal Value As ContentAlignment)
    _ImageAlign = Value
    Invalidate()
    End Set
    End Property

    #End Region
    #Region " EventArgs "

    Protected Overrides Sub OnMouseUp(ByVal e As MouseEventArgs)
    MouseState = 0
    Invalidate()
    MyBase.OnMouseUp(e)
    End Sub
    Protected Overrides Sub OnMouseDown(ByVal e As MouseEventArgs)
    MouseState = 1
    Invalidate()
    MyBase.OnMouseDown(e)
    End Sub

    Protected Overrides Sub OnMouseLeave(ByVal e As EventArgs)
    MouseState = 0
    Invalidate()
    MyBase.OnMouseLeave(e)
    End Sub

    Protected Overrides Sub OnTextChanged(ByVal e As System.EventArgs)
    Invalidate()
    MyBase.OnTextChanged(e)
    End Sub

    #End Region

    Sub New()
    SetStyle(ControlStyles.AllPaintingInWmPaint Or _
    ControlStyles.OptimizedDoubleBuffer Or _
    ControlStyles.ResizeRedraw Or _
    ControlStyles.SupportsTransparentBackColor Or _
    ControlStyles.UserPaint, True)

    BackColor = Color.Transparent
    DoubleBuffered = True
    Font = New Font("Segoe UI", 14)
    ForeColor = Color.White
    Size = New Size(166, 40)
    _TextAlignment = StringAlignment.Center
    P1 = New Pen(Color.FromArgb(0, 118, 176)) ' P1 = Border color
    End Sub

    Protected Overrides Sub OnResize(ByVal e As System.EventArgs)
    If Width > 0 AndAlso Height > 0 Then

    Shape = New GraphicsPath
    R1 = New Rectangle(0, 0, Width, Height)

    InactiveGB = New LinearGradientBrush(New Rectangle(0, 0, Width, Height), Color.FromArgb(0, 176, 231), Color.FromArgb(0, 152, 224), 90.0F)
    PressedGB = New LinearGradientBrush(New Rectangle(0, 0, Width, Height), Color.FromArgb(0, 118, 176), Color.FromArgb(0, 149, 222), 90.0F)
    PressedContourGB = New LinearGradientBrush(New Rectangle(0, 0, Width, Height), Color.FromArgb(0, 118, 176), Color.FromArgb(0, 118, 176), 90.0F)

    P3 = New Pen(PressedContourGB)
    End If

    With Shape
    .AddArc(0, 0, 10, 10, 180, 90)
    .AddArc(Width - 11, 0, 10, 10, -90, 90)
    .AddArc(Width - 11, Height - 11, 10, 10, 0, 90)
    .AddArc(0, Height - 11, 10, 10, 90, 90)
    .CloseAllFigures()
    End With

    Invalidate()
    MyBase.OnResize(e)
    End Sub

    Protected Overrides Sub OnPaint(ByVal e As PaintEventArgs)
    With e.Graphics
    .SmoothingMode = SmoothingMode.HighQuality

    Dim ipt As PointF = ImageLocation(GetStringFormat(ImageAlign), Size, ImageSize)

    Select Case MouseState
    Case 0 'Inactive
    .FillPath(InactiveGB, Shape) ' Fill button body with InactiveGB color gradient
    .DrawPath(P1, Shape) ' Draw button border [InactiveGB]
    If IsNothing(Image) Then
    ' If an image is not specified, only draw the string on the button
    .DrawString(Text, Font, New SolidBrush(ForeColor), R1, New StringFormat() With {.Alignment = _TextAlignment, .LineAlignment = StringAlignment.Center})
    Else
    ' If an image is specified, the image and draw the string on the button
    .DrawImage(_Image, ipt.X, ipt.Y, ImageSize.Width, ImageSize.Height)
    .DrawString(Text, Font, New SolidBrush(ForeColor), R1, New StringFormat() With {.Alignment = _TextAlignment, .LineAlignment = StringAlignment.Center})
    End If
    Case 1 'Pressed
    .FillPath(PressedGB, Shape) ' Fill button body with PressedGB color gradient
    .DrawPath(P3, Shape) ' Draw button border [PressedGB]
    If IsNothing(Image) Then
    ' If an image is not specified, only draw the string on the button
    .DrawString(Text, Font, New SolidBrush(ForeColor), R1, New StringFormat() With {.Alignment = _TextAlignment, .LineAlignment = StringAlignment.Center})
    Else
    ' If an image is specified, the image and draw the string on the button
    .DrawImage(_Image, ipt.X, ipt.Y, ImageSize.Width, ImageSize.Height)
    .DrawString(Text, Font, New SolidBrush(ForeColor), R1, New StringFormat() With {.Alignment = _TextAlignment, .LineAlignment = StringAlignment.Center})
    End If
    End Select
    End With
    MyBase.OnPaint(e)
    End Sub
    End Class

    #End Region
    #Region " Label "

    Class iTalk_Label
    Inherits Label

    Sub New()
    Font = New Font("Segoe UI", 8)
    ForeColor = Color.FromArgb(142, 142, 142)
    BackColor = Color.Transparent
    End Sub
    End Class

    #End Region
    #Region " Link Label "
    Class iTalk_LinkLabel
    Inherits LinkLabel

    Sub New()
    Font = New Font("Segoe UI", 8, FontStyle.Regular)
    BackColor = Color.Transparent
    LinkColor = Color.FromArgb(51, 153, 225)
    ActiveLinkColor = Color.FromArgb(0, 101, 202)
    VisitedLinkColor = Color.FromArgb(0, 101, 202)
    LinkBehavior = Windows.Forms.LinkBehavior.NeverUnderline
    End Sub
    End Class

    #End Region
    #Region " Header Label "

    Class iTalk_HeaderLabel
    Inherits Label

    Sub New()
    Font = New Font("Segoe UI", 25, FontStyle.Regular)
    ForeColor = Color.FromArgb(80, 80, 80)
    BackColor = Color.Transparent
    End Sub
    End Class

    #End Region
    #Region " Toggle Button "

    <DefaultEvent("ToggledChanged")> Class iTalk_Toggle
    Inherits Control

    #Region " Designer "

    '|------DO-NOT-REMOVE------|
    '|---------CREDITS---------|

    ' Pill class and functions were originally created by Tedd
    ' Last edited by Tedd on: 12/20/2013
    ' Modified by HazelDev on: 1/4/2014

    '|---------CREDITS---------|
    '|------DO-NOT-REMOVE------|

    Class PillStyle
    Public Left As Boolean
    Public Right As Boolean
    End Class

    Public Function Pill(ByVal Rectangle As Rectangle, ByVal PillStyle As PillStyle) As GraphicsPath
    Pill = New GraphicsPath()

    If PillStyle.Left Then
    Pill.AddArc(New Rectangle(Rectangle.X, Rectangle.Y, Rectangle.Height, Rectangle.Height), -270, 180)
    Else
    Pill.AddLine(Rectangle.X, Rectangle.Y + Rectangle.Height, Rectangle.X, Rectangle.Y)
    End If

    If PillStyle.Right Then
    Pill.AddArc(New Rectangle(Rectangle.X + Rectangle.Width - Rectangle.Height, Rectangle.Y, Rectangle.Height, Rectangle.Height), -90, 180)
    Else
    Pill.AddLine(Rectangle.X + Rectangle.Width, Rectangle.Y, Rectangle.X + Rectangle.Width, Rectangle.Y + Rectangle.Height)
    End If
    Pill.CloseAllFigures()
    Return Pill
    End Function

    Public Function Pill(ByVal X As Integer, ByVal Y As Integer, ByVal Width As Integer, ByVal Height As Integer, ByVal PillStyle As PillStyle)
    Return Pill(New Rectangle(X, Y, Width, Height), PillStyle)
    End Function

    #End Region
    #Region " Enums "

    Enum _Type
    YesNo
    OnOff
    IO
    End Enum

    #End Region
    #Region " Variables "

    Private WithEvents AnimationTimer As Timer = New Timer With {.Interval = 1}
    Private ToggleLocation As Integer = 0
    Event ToggledChanged()
    Private _Toggled As Boolean
    Private ToggleType As _Type
    Private Bar As Rectangle
    Private cHandle As Size = New Size(15, 20)

    #End Region
    #Region " Properties "

    Public Property Toggled() As Boolean
    Get
    Return _Toggled
    End Get
    Set(ByVal value As Boolean)
    _Toggled = value
    Invalidate()
    RaiseEvent ToggledChanged()
    End Set
    End Property

    Public Property Type As _Type
    Get
    Return ToggleType
    End Get
    Set(value As _Type)
    ToggleType = value
    Invalidate()
    End Set
    End Property

    #End Region
    #Region " EventArgs "

    Protected Overrides Sub OnResize(e As EventArgs)
    MyBase.OnResize(e)
    Width = 41
    Height = 23
    End Sub

    Protected Overrides Sub OnMouseUp(ByVal e As System.Windows.Forms.MouseEventArgs)
    MyBase.OnMouseUp(e)
    Toggled = Not Toggled
    End Sub

    #End Region

    Sub New()
    SetStyle(ControlStyles.AllPaintingInWmPaint Or _
    ControlStyles.DoubleBuffer Or _
    ControlStyles.ResizeRedraw Or _
    ControlStyles.UserPaint, True)
    End Sub
    Protected Overrides Sub OnHandleCreated(e As EventArgs)
    MyBase.OnHandleCreated(e)
    AnimationTimer.Start() ' activate the animation timer
    End Sub

    Private Sub Animation() Handles AnimationTimer.Tick
    ' Create a slide animation when toggled on/off
    If _Toggled = True Then
    If ToggleLocation < 100 Then
    ToggleLocation += 10
    Me.Invalidate(False)
    End If
    Else
    If ToggleLocation > 0 Then
    ToggleLocation -= 10
    Me.Invalidate(False)
    End If
    End If
    End Sub

    Protected Overrides Sub OnPaint(ByVal e As System.Windows.Forms.PaintEventArgs)
    MyBase.OnPaint(e)
    Dim G As Graphics = e.Graphics
    Dim Gradient As LinearGradientBrush = New LinearGradientBrush(New Point(0, CInt((Height / 2) - (cHandle.Height / 2))), New Point(0, CInt((Height / 2) + (cHandle.Height / 2))), Color.FromArgb(250, 250, 250), Color.FromArgb(240, 240, 240))
    Bar = New Rectangle(8, 10, Width - 21, Height - 21)

    G.Clear(Parent.BackColor)
    G.SmoothingMode = SmoothingMode.AntiAlias

    ' Draw the control body and border
    G.FillPath(Gradient, Pill(0, CInt(Height / 2 - cHandle.Height / 2), Width - 1, cHandle.Height - 5, New PillStyle With {.Left = True, .Right = True}))
    G.DrawPath(New Pen(Color.FromArgb(177, 177, 176)), Pill(0, CInt(Height / 2 - cHandle.Height / 2), Width - 1, cHandle.Height - 5, New PillStyle With {.Left = True, .Right = True}))

    Gradient.Dispose() ' Dispose GradientBrush object

    ' Draw a string based on the toggle boolean value
    Select Case ToggleType
    Case _Type.YesNo
    If Toggled Then
    G.DrawString("Yes", New Font("Segoe UI", 7, FontStyle.Regular), Brushes.Gray, Bar.X + 7, Bar.Y, New StringFormat() With {.Alignment = StringAlignment.Center, .LineAlignment = StringAlignment.Center})
    Else
    G.DrawString("No", New Font("Segoe UI", 7, FontStyle.Regular), Brushes.Gray, Bar.X + 18, Bar.Y, New StringFormat() With {.Alignment = StringAlignment.Center, .LineAlignment = StringAlignment.Center})
    End If
    Case _Type.OnOff
    If Toggled Then
    G.DrawString("On", New Font("Segoe UI", 7, FontStyle.Regular), Brushes.Gray, Bar.X + 7, Bar.Y, New StringFormat() With {.Alignment = StringAlignment.Center, .LineAlignment = StringAlignment.Center})
    Else
    G.DrawString("Off", New Font("Segoe UI", 7, FontStyle.Regular), Brushes.Gray, Bar.X + 18, Bar.Y, New StringFormat() With {.Alignment = StringAlignment.Center, .LineAlignment = StringAlignment.Center})
    End If
    Case _Type.IO
    If Toggled Then
    G.DrawString("I", New Font("Segoe UI", 7, FontStyle.Regular), Brushes.Gray, Bar.X + 7, Bar.Y, New StringFormat() With {.Alignment = StringAlignment.Center, .LineAlignment = StringAlignment.Center})
    Else
    G.DrawString("O", New Font("Segoe UI", 7, FontStyle.Regular), Brushes.Gray, Bar.X + 18, Bar.Y, New StringFormat() With {.Alignment = StringAlignment.Center, .LineAlignment = StringAlignment.Center})
    End If
    End Select

    ' Draw the toggle handle
    G.FillEllipse(New SolidBrush(Color.FromArgb(249, 249, 249)), Bar.X + CInt(Bar.Width * (ToggleLocation / 80)) - CInt(cHandle.Width / 2), Bar.Y + CInt((Bar.Height / 2)) - CInt(cHandle.Height / 2 - 1), cHandle.Width, cHandle.Height - 5)
    G.DrawEllipse(New Pen(Color.FromArgb(177, 177, 176)), Bar.X + CInt(Bar.Width * (ToggleLocation / 80) - CInt(cHandle.Width / 2)), Bar.Y + CInt((Bar.Height / 2)) - CInt(cHandle.Height / 2 - 1), cHandle.Width, cHandle.Height - 5)
    End Sub
    End Class

    #End Region
    #Region " Big TextBox "

    <DefaultEvent("TextChanged")> Class iTalk_TextBox_Big
    Inherits Control

    #Region " Variables "

    Public WithEvents iTalkTB As New TextBox
    Private Shape As GraphicsPath
    Private _maxchars As Integer = 32767
    Private _ReadOnly As Boolean
    Private _Multiline As Boolean
    Private ALNType As HorizontalAlignment
    Private isPasswordMasked As Boolean = False
    Private P1 As Pen
    Private B1 As SolidBrush

    #End Region
    #Region " Properties "

    Public Shadows Property TextAlignment() As HorizontalAlignment
    Get
    Return ALNType
    End Get
    Set(ByVal Val As HorizontalAlignment)
    ALNType = Val
    Invalidate()
    End Set
    End Property
    Public Shadows Property MaxLength() As Integer
    Get
    Return _maxchars
    End Get
    Set(ByVal Val As Integer)
    _maxchars = Val
    iTalkTB.MaxLength = MaxLength
    Invalidate()
    End Set
    End Property

    Public Shadows Property UseSystemPasswordChar() As Boolean
    Get
    Return isPasswordMasked
    End Get
    Set(ByVal Val As Boolean)
    iTalkTB.UseSystemPasswordChar = UseSystemPasswordChar
    isPasswordMasked = Val
    Invalidate()
    End Set
    End Property
    Property [ReadOnly]() As Boolean
    Get
    Return _ReadOnly
    End Get
    Set(ByVal value As Boolean)
    _ReadOnly = value
    If iTalkTB IsNot Nothing Then
    iTalkTB.ReadOnly = value
    End If
    End Set
    End Property
    Property Multiline() As Boolean
    Get
    Return _Multiline
    End Get
    Set(ByVal value As Boolean)
    _Multiline = value
    If iTalkTB IsNot Nothing Then
    iTalkTB.Multiline = value

    If value Then
    iTalkTB.Height = Height - 23
    Else
    Height = iTalkTB.Height + 23
    End If
    End If
    End Set
    End Property

    #End Region
    #Region " EventArgs "

    Protected Overrides Sub OnTextChanged(ByVal e As System.EventArgs)
    MyBase.OnTextChanged(e)
    Invalidate()
    End Sub

    Protected Overrides Sub OnForeColorChanged(ByVal e As System.EventArgs)
    MyBase.OnForeColorChanged(e)
    iTalkTB.ForeColor = ForeColor
    Invalidate()
    End Sub

    Protected Overrides Sub OnFontChanged(ByVal e As System.EventArgs)
    MyBase.OnFontChanged(e)
    iTalkTB.Font = Font
    End Sub

    Protected Overrides Sub OnPaintBackground(e As PaintEventArgs)
    MyBase.OnPaintBackground(e)
    End Sub

    Private Sub _OnKeyDown(ByVal Obj As Object, ByVal e As KeyEventArgs)
    If e.Control AndAlso e.KeyCode = Keys.A Then
    iTalkTB.SelectAll()
    e.SuppressKeyPress = True
    End If
    If e.Control AndAlso e.KeyCode = Keys.C Then
    iTalkTB.Copy()
    e.SuppressKeyPress = True
    End If
    End Sub

    Protected Overrides Sub OnResize(ByVal e As System.EventArgs)
    MyBase.OnResize(e)
    If _Multiline Then
    iTalkTB.Height = Height - 23
    Else
    Height = iTalkTB.Height + 23
    End If

    Shape = New GraphicsPath
    With Shape
    .AddArc(0, 0, 10, 10, 180, 90)
    .AddArc(Width - 11, 0, 10, 10, -90, 90)
    .AddArc(Width - 11, Height - 11, 10, 10, 0, 90)
    .AddArc(0, Height - 11, 10, 10, 90, 90)
    .CloseAllFigures()
    End With
    End Sub

    Protected Overrides Sub OnGotFocus(ByVal e As System.EventArgs)
    MyBase.OnGotFocus(e)
    iTalkTB.Focus()
    End Sub

    Sub _TextChanged() Handles iTalkTB.TextChanged
    Text = iTalkTB.Text
    End Sub

    Sub _BaseTextChanged() Handles MyBase.TextChanged
    iTalkTB.Text = Text
    End Sub

    #End Region

    Sub AddTextBox()
    With iTalkTB
    .Size = New Size(Width - 10, 43)
    .Location = New Point(7, 10)
    .Text = String.Empty
    .BorderStyle = BorderStyle.None
    .TextAlign = HorizontalAlignment.Left
    .Font = New Font("Tahoma", 11)
    .UseSystemPasswordChar = UseSystemPasswordChar
    .Multiline = False
    End With
    AddHandler iTalkTB.KeyDown, AddressOf _OnKeyDown
    End Sub

    Sub New()
    SetStyle(ControlStyles.SupportsTransparentBackColor, True)
    SetStyle(ControlStyles.UserPaint, True)

    AddTextBox()
    Controls.Add(iTalkTB)

    P1 = New Pen(Color.FromArgb(180, 180, 180))
    B1 = New SolidBrush(Color.White)
    BackColor = Color.Transparent
    ForeColor = Color.DimGray

    Text = Nothing
    Font = New Font("Tahoma", 11)
    Size = New Size(135, 43)
    DoubleBuffered = True
    End Sub

    Protected Overrides Sub OnPaint(ByVal e As System.Windows.Forms.PaintEventArgs)
    MyBase.OnPaint(e)
    Dim B As New Bitmap(Width, Height)
    Dim G As Graphics = Graphics.FromImage(B)

    G.SmoothingMode = SmoothingMode.AntiAlias

    With iTalkTB
    .Width = Width - 10
    .TextAlign = TextAlignment
    .UseSystemPasswordChar = UseSystemPasswordChar
    End With

    G.Clear(Color.Transparent)
    G.FillPath(B1, Shape) ' Draw background
    G.DrawPath(P1, Shape) ' Draw border

    e.Graphics.DrawImage(B.Clone(), 0, 0)
    G.Dispose() : B.Dispose()
    End Sub
    End Class

    #End Region
    #Region " Small TextBox "

    <DefaultEvent("TextChanged")> Class iTalk_TextBox_Small
    Inherits Control

    #Region " Variables "

    Public WithEvents iTalkTB As New TextBox
    Private Shape As GraphicsPath
    Private _maxchars As Integer = 32767
    Private _ReadOnly As Boolean
    Private _Multiline As Boolean
    Private ALNType As HorizontalAlignment
    Private isPasswordMasked As Boolean = False
    Private P1 As Pen
    Private B1 As SolidBrush

    #End Region
    #Region " Properties "

    Public Shadows Property TextAlignment() As HorizontalAlignment
    Get
    Return ALNType
    End Get
    Set(ByVal Val As HorizontalAlignment)
    ALNType = Val
    Invalidate()
    End Set
    End Property
    Public Shadows Property MaxLength() As Integer
    Get
    Return _maxchars
    End Get
    Set(ByVal Val As Integer)
    _maxchars = Val
    iTalkTB.MaxLength = MaxLength
    Invalidate()
    End Set
    End Property

    Public Shadows Property UseSystemPasswordChar() As Boolean
    Get
    Return isPasswordMasked
    End Get
    Set(ByVal Val As Boolean)
    iTalkTB.UseSystemPasswordChar = UseSystemPasswordChar
    isPasswordMasked = Val
    Invalidate()
    End Set
    End Property
    Property [ReadOnly]() As Boolean
    Get
    Return _ReadOnly
    End Get
    Set(ByVal value As Boolean)
    _ReadOnly = value
    If iTalkTB IsNot Nothing Then
    iTalkTB.ReadOnly = value
    End If
    End Set
    End Property
    Property Multiline() As Boolean
    Get
    Return _Multiline
    End Get
    Set(ByVal value As Boolean)
    _Multiline = value
    If iTalkTB IsNot Nothing Then
    iTalkTB.Multiline = value

    If value Then
    iTalkTB.Height = Height - 10
    Else
    Height = iTalkTB.Height + 10
    End If
    End If
    End Set
    End Property

    #End Region
    #Region " EventArgs "

    Protected Overrides Sub OnTextChanged(ByVal e As System.EventArgs)
    MyBase.OnTextChanged(e)
    Invalidate()
    End Sub

    Protected Overrides Sub OnForeColorChanged(ByVal e As System.EventArgs)
    MyBase.OnForeColorChanged(e)
    iTalkTB.ForeColor = ForeColor
    Invalidate()
    End Sub

    Protected Overrides Sub OnFontChanged(ByVal e As System.EventArgs)
    MyBase.OnFontChanged(e)
    iTalkTB.Font = Font
    End Sub
    Protected Overrides Sub OnPaintBackground(e As PaintEventArgs)
    MyBase.OnPaintBackground(e)
    End Sub

    Private Sub _OnKeyDown(ByVal Obj As Object, ByVal e As KeyEventArgs)
    If e.Control AndAlso e.KeyCode = Keys.A Then
    iTalkTB.SelectAll()
    e.SuppressKeyPress = True
    End If
    If e.Control AndAlso e.KeyCode = Keys.C Then
    iTalkTB.Copy()
    e.SuppressKeyPress = True
    End If
    End Sub

    Protected Overrides Sub OnResize(ByVal e As System.EventArgs)
    MyBase.OnResize(e)
    If _Multiline Then
    iTalkTB.Height = Height - 10
    Else
    Height = iTalkTB.Height + 10
    End If

    Shape = New GraphicsPath
    With Shape
    .AddArc(0, 0, 10, 10, 180, 90)
    .AddArc(Width - 11, 0, 10, 10, -90, 90)
    .AddArc(Width - 11, Height - 11, 10, 10, 0, 90)
    .AddArc(0, Height - 11, 10, 10, 90, 90)
    .CloseAllFigures()
    End With
    End Sub

    Protected Overrides Sub OnGotFocus(ByVal e As System.EventArgs)
    MyBase.OnGotFocus(e)
    iTalkTB.Focus()
    End Sub

    Sub _TextChanged() Handles iTalkTB.TextChanged
    Text = iTalkTB.Text
    End Sub

    Sub _BaseTextChanged() Handles MyBase.TextChanged
    iTalkTB.Text = Text
    End Sub

    #End Region

    Sub AddTextBox()
    ' Initialize the TextBox
    With iTalkTB
    .Size = New Size(Width - 10, 33)
    .Location = New Point(7, 5)
    .Text = String.Empty
    .BorderStyle = BorderStyle.None
    .TextAlign = HorizontalAlignment.Left
    .Font = New Font("Tahoma", 9)
    .UseSystemPasswordChar = UseSystemPasswordChar
    .Multiline = False
    End With
    AddHandler iTalkTB.KeyDown, AddressOf _OnKeyDown
    End Sub

    Sub New()
    SetStyle(ControlStyles.SupportsTransparentBackColor, True)
    SetStyle(ControlStyles.UserPaint, True)

    AddTextBox()
    Controls.Add(iTalkTB)

    P1 = New Pen(Color.FromArgb(180, 180, 180))
    B1 = New SolidBrush(Color.White)
    BackColor = Color.Transparent
    ForeColor = Color.DimGray

    Text = Nothing
    Font = New Font("Tahoma", 11)
    Size = New Size(135, 33)
    DoubleBuffered = True
    End Sub

    Protected Overrides Sub OnPaint(ByVal e As System.Windows.Forms.PaintEventArgs)
    MyBase.OnPaint(e)
    Dim B As New Bitmap(Width, Height)
    Dim G As Graphics = Graphics.FromImage(B)

    G.SmoothingMode = SmoothingMode.AntiAlias

    With iTalkTB
    .Width = Width - 10
    .TextAlign = TextAlignment
    .UseSystemPasswordChar = UseSystemPasswordChar
    End With

    G.Clear(Color.Transparent)
    G.FillPath(B1, Shape) ' Draw background
    G.DrawPath(P1, Shape) ' Draw border

    e.Graphics.DrawImage(B.Clone(), 0, 0)
    G.Dispose() : B.Dispose()
    End Sub
    End Class

    #End Region
    #Region " RichTextBox "

    <DefaultEvent("TextChanged")> Class iTalk_RichTextBox
    Inherits Control

    #Region " Variables "

    Public WithEvents iTalkRTB As New RichTextBox
    Private _ReadOnly As Boolean
    Private _WordWrap As Boolean
    Private _AutoWordSelection As Boolean
    Private Shape As GraphicsPath

    #End Region
    #Region " Properties "

    Overrides Property Text As String
    Get
    Return iTalkRTB.Text
    End Get
    Set(value As String)
    iTalkRTB.Text = value
    Invalidate()
    End Set
    End Property
    Property [ReadOnly]() As Boolean
    Get
    Return _ReadOnly
    End Get
    Set(ByVal value As Boolean)
    _ReadOnly = value
    If iTalkRTB IsNot Nothing Then
    iTalkRTB.ReadOnly = value
    End If
    End Set
    End Property
    Property [WordWrap]() As Boolean
    Get
    Return _WordWrap
    End Get
    Set(ByVal value As Boolean)
    _WordWrap = value
    If iTalkRTB IsNot Nothing Then
    iTalkRTB.WordWrap = value
    End If
    End Set
    End Property
    Property [AutoWordSelection]() As Boolean
    Get
    Return _AutoWordSelection
    End Get
    Set(ByVal value As Boolean)
    _AutoWordSelection = value
    If iTalkRTB IsNot Nothing Then
    iTalkRTB.AutoWordSelection = value
    End If
    End Set
    End Property
    #End Region
    #Region " EventArgs "

    Protected Overrides Sub OnForeColorChanged(ByVal e As System.EventArgs)
    MyBase.OnForeColorChanged(e)
    iTalkRTB.ForeColor = ForeColor
    Invalidate()
    End Sub

    Protected Overrides Sub OnFontChanged(ByVal e As System.EventArgs)
    MyBase.OnFontChanged(e)
    iTalkRTB.Font = Font
    End Sub
    Protected Overrides Sub OnPaintBackground(e As PaintEventArgs)
    MyBase.OnPaintBackground(e)
    End Sub

    Protected Overrides Sub OnSizeChanged(ByVal e As System.EventArgs)
    MyBase.OnSizeChanged(e)
    iTalkRTB.Size = New Size(Width - 13, Height - 11)
    End Sub


    Protected Overrides Sub OnResize(ByVal e As System.EventArgs)
    MyBase.OnResize(e)

    Shape = New GraphicsPath
    With Shape
    .AddArc(0, 0, 10, 10, 180, 90)
    .AddArc(Width - 11, 0, 10, 10, -90, 90)
    .AddArc(Width - 11, Height - 11, 10, 10, 0, 90)
    .AddArc(0, Height - 11, 10, 10, 90, 90)
    .CloseAllFigures()
    End With
    End Sub

    Sub _TextChanged() Handles MyBase.TextChanged
    iTalkRTB.Text = Text
    End Sub

    #End Region

    Sub AddRichTextBox()
    With iTalkRTB
    .BackColor = Color.White
    .Size = New Size(Width - 10, 100)
    .Location = New Point(7, 5)
    .Text = String.Empty
    .BorderStyle = BorderStyle.None
    .Font = New Font("Tahoma", 10)
    .Multiline = True
    End With
    End Sub

    Sub New()
    MyBase.New()
    SetStyle(ControlStyles.SupportsTransparentBackColor, True)
    SetStyle(ControlStyles.UserPaint, True)

    AddRichTextBox()
    Controls.Add(iTalkRTB)
    BackColor = Color.Transparent
    ForeColor = Color.DimGray

    Text = Nothing
    Font = New Font("Tahoma", 10)
    Size = New Size(150, 100)
    WordWrap = True
    AutoWordSelection = False
    DoubleBuffered = True
    End Sub

    Protected Overrides Sub OnPaint(ByVal e As System.Windows.Forms.PaintEventArgs)
    MyBase.OnPaint(e)
    Dim B As New Bitmap(Width, Height)
    Dim G = Graphics.FromImage(B)

    G.SmoothingMode = SmoothingMode.AntiAlias

    G.Clear(Color.Transparent) ' Set control background to transparent
    G.FillPath(Brushes.White, Shape) ' Draw RTB background
    G.DrawPath(New Pen(Color.FromArgb(180, 180, 180)), Shape) ' Draw border

    G.Dispose()
    e.Graphics.DrawImage(B.Clone(), 0, 0)
    B.Dispose()
    End Sub
    End Class

    #End Region
    #Region " NumericUpDown "

    Class iTalk_NumericUpDown
    Inherits Control

    #Region " Enums "

    Enum _TextAlignment
    Near
    Center
    End Enum

    #End Region
    #Region " Variables "

    Private Shape As GraphicsPath
    Private P1 As Pen
    Private B1 As SolidBrush

    Private _Value, _Minimum, _Maximum As Long
    Private Xval, Yval As Integer
    Private KeyboardNum As Boolean
    Private MyStringAlignment As _TextAlignment

    #End Region
    #Region " Properties "

    Public Property Value As Long
    Get
    Return _Value
    End Get
    Set(value As Long)
    If value <= _Maximum And value >= _Minimum Then _Value = value
    Invalidate()
    End Set
    End Property

    Public Property Minimum As Long
    Get
    Return _Minimum
    End Get
    Set(value As Long)
    If value < _Maximum Then _Minimum = value
    If _Value < _Minimum Then _Value = Minimum
    Invalidate()
    End Set
    End Property

    Public Property Maximum As Long
    Get
    Return _Maximum
    End Get
    Set(value As Long)
    If value > _Minimum Then _Maximum = value
    If _Value > _Maximum Then _Value = _Maximum
    Invalidate()
    End Set
    End Property

    Public Property TextAlignment As _TextAlignment
    Get
    Return MyStringAlignment
    End Get
    Set(value As _TextAlignment)
    MyStringAlignment = value
    Invalidate()
    End Set
    End Property

    #End Region
    #Region " EventArgs "

    Protected Overrides Sub OnResize(ByVal e As System.EventArgs)
    MyBase.OnResize(e)
    Height = 28
    Shape = New GraphicsPath
    With Shape
    .AddArc(0, 0, 10, 10, 180, 90)
    .AddArc(Width - 11, 0, 10, 10, -90, 90)
    .AddArc(Width - 11, Height - 11, 10, 10, 0, 90)
    .AddArc(0, Height - 11, 10, 10, 90, 90)
    .CloseAllFigures()
    End With
    End Sub

    Protected Overrides Sub OnMouseMove(ByVal e As System.Windows.Forms.MouseEventArgs)
    MyBase.OnMouseMove(e)
    Xval = e.Location.X
    Yval = e.Location.Y
    Invalidate()

    If e.X < Width - 24 Then
    Cursor = Cursors.IBeam
    Else
    Cursor = Cursors.Default
    End If
    End Sub

    Protected Overrides Sub OnMouseDown(ByVal e As System.Windows.Forms.MouseEventArgs)
    MyBase.OnMouseClick(e)
    If Xval > Me.Width - 23 AndAlso Xval < Me.Width - 3 Then
    If Yval < 15 Then
    If (Value + 1) <= _Maximum Then _Value += 1
    Else
    If (Value - 1) >= _Minimum Then _Value -= 1
    End If
    Else
    KeyboardNum = Not KeyboardNum
    Focus()
    End If
    Invalidate()
    End Sub

    Protected Overrides Sub OnKeyPress(ByVal e As System.Windows.Forms.KeyPressEventArgs)
    MyBase.OnKeyPress(e)
    Try
    If KeyboardNum = True Then
    _Value = CStr(CStr(_Value) & e.KeyChar.ToString)
    End If
    If _Value > _Maximum Then
    _Value = _Maximum
    End If
    Catch ex As Exception
    End Try
    End Sub

    Protected Overrides Sub OnKeyUp(ByVal e As System.Windows.Forms.KeyEventArgs)
    MyBase.OnKeyUp(e)
    If e.KeyCode = Keys.Back Then
    Dim TemporaryValue As String = _Value.ToString()
    TemporaryValue = TemporaryValue.Remove(Convert.ToInt32(TemporaryValue.Length - 1))
    If (TemporaryValue.Length = 0) Then TemporaryValue = "0"
    _Value = Convert.ToInt32(TemporaryValue)
    End If
    Invalidate()
    End Sub

    Protected Overrides Sub OnMouseWheel(e As MouseEventArgs)
    MyBase.OnMouseWheel(e)
    If e.Delta > 0 Then
    If (Value + 1) <= _Maximum Then _Value += 1
    Invalidate()
    Else
    If (Value - 1) >= _Minimum Then _Value -= 1
    Invalidate()
    End If
    End Sub

    #End Region

    Sub New()
    SetStyle(ControlStyles.SupportsTransparentBackColor, True)
    SetStyle(ControlStyles.UserPaint, True)

    P1 = New Pen(Color.FromArgb(180, 180, 180))
    B1 = New SolidBrush(Color.White)
    BackColor = Color.Transparent
    ForeColor = Color.DimGray

    _Minimum = 0
    _Maximum = 100

    Font = New Font("Tahoma", 11)
    Size = New Size(70, 28)
    MinimumSize = New Size(62, 28)
    DoubleBuffered = True
    End Sub

    Public Sub Increment(Value As Integer)
    Me._Value += Value
    Invalidate()
    End Sub

    Public Sub Decrement(Value As Integer)
    Me._Value -= Value
    Invalidate()
    End Sub

    Protected Overrides Sub OnPaint(ByVal e As System.Windows.Forms.PaintEventArgs)
    MyBase.OnPaint(e)
    Dim B As New Bitmap(Width, Height)
    Dim G As Graphics = Graphics.FromImage(B)

    G.SmoothingMode = SmoothingMode.AntiAlias

    G.Clear(Color.Transparent) ' Set control background color
    G.FillPath(B1, Shape) ' Draw background
    G.DrawPath(P1, Shape) ' Draw border

    Dim ColorGradient As New LinearGradientBrush(New Rectangle(Width - 23, 4, 19, 19), Color.FromArgb(241, 241, 241), Color.FromArgb(241, 241, 241), 90.0F)
    G.FillRectangle(ColorGradient, ColorGradient.Rectangle) ' Fills the body of the rectangle

    G.DrawRectangle(New Pen(Color.FromArgb(252, 252, 252)), New Rectangle(Width - 22, 5, 17, 17))
    G.DrawRectangle(New Pen(Color.FromArgb(180, 180, 180)), New Rectangle(Width - 23, 4, 19, 19))

    G.DrawLine(New Pen(Color.FromArgb(250, 252, 250)), New Point(Width - 22, Height - 16), New Point(Width - 5, Height - 16))
    G.DrawLine(New Pen(Color.FromArgb(180, 180, 180)), New Point(Width - 22, Height - 15), New Point(Width - 5, Height - 15))
    G.DrawLine(New Pen(Color.FromArgb(250, 250, 250)), New Point(Width - 22, Height - 14), New Point(Width - 5, Height - 14))

    G.DrawString("+", New Font("Tahoma", 8), Brushes.Gray, Width - 19, Height - 26)
    G.DrawString("-", New Font("Tahoma", 12), Brushes.Gray, Width - 19, Height - 20)

    Select Case MyStringAlignment
    Case _TextAlignment.Near
    G.DrawString(Value, Font, New SolidBrush(ForeColor), New Rectangle(5, 0, Width - 1, Height - 1), New StringFormat() With {.Alignment = StringAlignment.Near, .LineAlignment = StringAlignment.Center})
    Case _TextAlignment.Center
    G.DrawString(Value, Font, New SolidBrush(ForeColor), New Rectangle(0, 0, Width - 1, Height - 1), New StringFormat() With {.Alignment = StringAlignment.Center, .LineAlignment = StringAlignment.Center})
    End Select
    e.Graphics.DrawImage(B.Clone(), 0, 0)
    G.Dispose() : B.Dispose()
    End Sub
    End Class

    #End Region
    #Region " Left Chat Bubble "

    Public Class iTalk_ChatBubble_L
    Inherits Control

    #Region " Variables "

    Private Shape As GraphicsPath
    Private _TextColor As Color = Color.FromArgb(52, 52, 52)
    Private _BubbleColor As Color = Color.FromArgb(217, 217, 217)
    Private _DrawBubbleArrow As Boolean = True

    #End Region
    #Region " Properties "

    Public Overrides Property ForeColor As Color
    Get
    Return Me._TextColor
    End Get
    Set(ByVal value As Color)
    Me._TextColor = value
    Me.Invalidate()
    End Set
    End Property

    Public Property BubbleColor As Color
    Get
    Return Me._BubbleColor
    End Get
    Set(ByVal value As Color)
    Me._BubbleColor = value
    Me.Invalidate()
    End Set
    End Property

    Public Shadows Property DrawBubbleArrow() As Boolean
    Get
    Return _DrawBubbleArrow
    End Get
    Set(ByVal Val As Boolean)
    _DrawBubbleArrow = Val
    Invalidate()
    End Set
    End Property

    #End Region

    Sub New()
    SetStyle(ControlStyles.AllPaintingInWmPaint Or _
    ControlStyles.OptimizedDoubleBuffer Or _
    ControlStyles.ResizeRedraw Or _
    ControlStyles.SupportsTransparentBackColor Or _
    ControlStyles.UserPaint, True)
    DoubleBuffered = True
    Size = New Size(152, 38)
    BackColor = Color.Transparent
    ForeColor = Color.FromArgb(52, 52, 52)
    Font = New Font("Segoe UI", 10)
    End Sub

    Protected Overrides Sub OnResize(ByVal e As System.EventArgs)
    Shape = New GraphicsPath

    With Shape
    .AddArc(9, 0, 10, 10, 180, 90)
    .AddArc(Width - 11, 0, 10, 10, -90, 90)
    .AddArc(Width - 11, Height - 11, 10, 10, 0, 90)
    .AddArc(9, Height - 11, 10, 10, 90, 90)
    .CloseAllFigures()
    End With

    Invalidate()
    MyBase.OnResize(e)
    End Sub

    Protected Overrides Sub OnPaint(e As PaintEventArgs)
    MyBase.OnPaint(e)
    Dim B As New Bitmap(Width, Height)
    Dim G = Graphics.FromImage(B)

    With G
    .SmoothingMode = SmoothingMode.HighQuality
    .PixelOffsetMode = PixelOffsetMode.HighQuality
    .Clear(BackColor)

    .FillPath(New SolidBrush(_BubbleColor), Shape) ' Fill the body of the bubble with the specified color
    .DrawString(Text, Font, New SolidBrush(ForeColor), New Rectangle(15, 4, Width - 17, Height - 5))

    ' Draw a polygon on the right side of the bubble
    If _DrawBubbleArrow = True Then
    Dim p() As Point = {New Point(9, Height - 19), New Point(0, Height - 25), New Point(9, Height - 30)}
    .FillPolygon(New SolidBrush(_BubbleColor), p)
    .DrawPolygon(New Pen(New SolidBrush(_BubbleColor)), p)
    End If
    End With

    G.Dispose()
    e.Graphics.InterpolationMode = InterpolationMode.HighQualityBicubic
    e.Graphics.DrawImageUnscaled(B, 0, 0)
    B.Dispose()
    End Sub
    End Class

    #End Region
    #Region " Right Chat Bubble "

    Public Class iTalk_ChatBubble_R
    Inherits Control

    #Region " Variables "

    Private Shape As GraphicsPath
    Private _TextColor As Color = Color.FromArgb(52, 52, 52)
    Private _BubbleColor As Color = Color.FromArgb(192, 206, 215)
    Private _DrawBubbleArrow As Boolean = True

    #End Region
    #Region " Properties "

    Public Overrides Property ForeColor As Color
    Get
    Return Me._TextColor
    End Get
    Set(ByVal value As Color)
    Me._TextColor = value
    Me.Invalidate()
    End Set
    End Property

    Public Property BubbleColor As Color
    Get
    Return Me._BubbleColor
    End Get
    Set(ByVal value As Color)
    Me._BubbleColor = value
    Me.Invalidate()
    End Set
    End Property

    Public Shadows Property DrawBubbleArrow() As Boolean
    Get
    Return _DrawBubbleArrow
    End Get
    Set(ByVal Val As Boolean)
    _DrawBubbleArrow = Val
    Invalidate()
    End Set
    End Property

    #End Region

    Sub New()
    SetStyle(ControlStyles.AllPaintingInWmPaint Or _
    ControlStyles.OptimizedDoubleBuffer Or _
    ControlStyles.ResizeRedraw Or _
    ControlStyles.SupportsTransparentBackColor Or _
    ControlStyles.UserPaint, True)
    DoubleBuffered = True
    Size = New Size(152, 38)
    BackColor = Color.Transparent
    ForeColor = Color.FromArgb(52, 52, 52)
    Font = New Font("Segoe UI", 10)
    End Sub

    Protected Overrides Sub OnResize(ByVal e As System.EventArgs)
    MyBase.OnResize(e)
    Shape = New GraphicsPath

    With Shape
    .AddArc(0, 0, 10, 10, 180, 90)
    .AddArc(Width - 18, 0, 10, 10, -90, 90)
    .AddArc(Width - 18, Height - 11, 10, 10, 0, 90)
    .AddArc(0, Height - 11, 10, 10, 90, 90)
    .CloseAllFigures()
    End With

    Invalidate()
    End Sub

    Protected Overrides Sub OnPaint(e As PaintEventArgs)
    MyBase.OnPaint(e)
    Dim B As New Bitmap(Width, Height)
    Dim G = Graphics.FromImage(B)

    With G
    .SmoothingMode = SmoothingMode.HighQuality
    .PixelOffsetMode = PixelOffsetMode.HighQuality
    .Clear(BackColor)

    .FillPath(New SolidBrush(_BubbleColor), Shape) ' Fill the body of the bubble with the specified color
    .DrawString(Text, Font, New SolidBrush(ForeColor), (New Rectangle(6, 4, Width - 15, Height)))

    ' Draw a polygon on the right side of the bubble
    If _DrawBubbleArrow = True Then
    Dim p() As Point = {New Point(Width - 8, Height - 19), New Point(Width, Height - 25), New Point(Width - 8, Height - 30)}
    .FillPolygon(New SolidBrush(_BubbleColor), p)
    .DrawPolygon(New Pen(New SolidBrush(_BubbleColor)), p)
    End If
    End With
    G.Dispose()
    e.Graphics.InterpolationMode = InterpolationMode.HighQualityBicubic
    e.Graphics.DrawImageUnscaled(B, 0, 0)
    B.Dispose()
    End Sub
    End Class

    #End Region
    #Region " Separator "

    Public Class iTalk_Separator
    Inherits Control

    #Region " Variables "

    Dim myBrush As New SolidBrush(Color.FromArgb(184, 183, 188))
    Dim myPen As New Pen(myBrush)

    #End Region

    Sub New()
    SetStyle(ControlStyles.ResizeRedraw, True)
    Me.Size = New Point(120, 10)
    End Sub

    Protected Overrides Sub OnPaint(ByVal e As System.Windows.Forms.PaintEventArgs)
    MyBase.OnPaint(e)
    e.Graphics.DrawLine(myPen, 0, 5, Width, 5) ' Draw the line
    End Sub
    End Class

    #End Region
    #Region " Panel "

    Class iTalk_Panel
    Inherits ContainerControl

    Private Shape As GraphicsPath

    Sub New()
    SetStyle(ControlStyles.SupportsTransparentBackColor, True)
    SetStyle(ControlStyles.UserPaint, True)

    BackColor = Color.Transparent
    Me.Size = New Size(187, 117)
    Padding = New Padding(5, 5, 5, 5)
    DoubleBuffered = True
    End Sub

    Protected Overrides Sub OnResize(ByVal e As System.EventArgs)
    MyBase.OnResize(e)

    Shape = New GraphicsPath
    With Shape
    .AddArc(0, 0, 10, 10, 180, 90)
    .AddArc(Width - 11, 0, 10, 10, -90, 90)
    .AddArc(Width - 11, Height - 11, 10, 10, 0, 90)
    .AddArc(0, Height - 11, 10, 10, 90, 90)
    .CloseAllFigures()
    End With
    End Sub

    Protected Overrides Sub OnPaint(ByVal e As System.Windows.Forms.PaintEventArgs)
    MyBase.OnPaint(e)
    Dim B As New Bitmap(Width, Height)
    Dim G = Graphics.FromImage(B)

    G.SmoothingMode = SmoothingMode.HighQuality

    G.Clear(Color.Transparent) ' Set control background to transparent
    G.FillPath(Brushes.White, Shape) ' Draw RTB background
    G.DrawPath(New Pen(Color.FromArgb(180, 180, 180)), Shape) ' Draw border

    G.Dispose()
    e.Graphics.DrawImage(B.Clone(), 0, 0)
    B.Dispose()
    End Sub
    End Class

    #End Region
    #Region " GroupBox "

    Public Class iTalk_GroupBox
    Inherits ContainerControl

    Sub New()
    SetStyle(ControlStyles.UserPaint Or ControlStyles.SupportsTransparentBackColor, True)
    BackColor = Color.Transparent
    DoubleBuffered = True ' Reduce control flicker
    Me.Size = New Size(212, 104)
    Me.MinimumSize = New Size(136, 50)
    Me.Padding = New Padding(5, 28, 5, 5) ' Set padding so controls won't overlay when full-docked
    End Sub

    Protected Overrides Sub OnPaint(ByVal e As System.Windows.Forms.PaintEventArgs)
    MyBase.OnPaint(e)
    Dim B As New Bitmap(Width, Height)
    Dim G As Graphics = Graphics.FromImage(B)
    Dim TitleBox As New Rectangle(51, 3, Width - 103, 18)
    Dim box As New Rectangle(0, 0, Width - 1, Height - 10)

    G.Clear(Color.Transparent)
    G.SmoothingMode = SmoothingMode.HighQuality ' Specifies antialiased rendering

    ' Draw the body of the GroupBox
    G.FillPath(Brushes.White, RoundRectangle.RoundRect(New Rectangle(1, 12, Width - 3, box.Height - 1), 8))
    ' Draw the border of the GroupBox
    G.DrawPath(New Pen(Color.FromArgb(159, 159, 161)), RoundRectangle.RoundRect(New Rectangle(1, 12, Width - 3, Height - 13), 8))

    ' Draw the background of the title box
    G.FillPath(Brushes.White, RoundRectangle.RoundRect(TitleBox, 1))
    ' Draw the border of the title box
    G.DrawPath(New Pen(Color.FromArgb(182, 180, 186)), RoundRectangle.RoundRect(TitleBox, 4))
    ' Draw the specified string from 'Text' property inside the title box
    G.DrawString(Text, New Font("Tahoma", 9, FontStyle.Regular), New SolidBrush(Color.FromArgb(53, 53, 53)), TitleBox, New StringFormat() With {.Alignment = StringAlignment.Center, .LineAlignment = StringAlignment.Center})

    e.Graphics.DrawImage(B.Clone(), 0, 0)
    G.Dispose()
    B.Dispose()
    End Sub
    End Class

    #End Region
    #Region " CheckBox "

    <DefaultEvent("CheckedChanged")> Class iTalk_CheckBox
    Inherits Control

    #Region " Variables "

    Private Shape As GraphicsPath
    Private GB As LinearGradientBrush
    Private R1, R2 As Rectangle
    Private _Checked As Boolean
    Event CheckedChanged(ByVal sender As Object)

    #End Region
    #Region " Properties "

    Property Checked As Boolean
    Get
    Return _Checked
    End Get
    Set(ByVal value As Boolean)
    _Checked = value
    RaiseEvent CheckedChanged(Me)
    Invalidate()
    End Set
    End Property

    #End Region

    Sub New()
    SetStyle(ControlStyles.AllPaintingInWmPaint Or _
    ControlStyles.OptimizedDoubleBuffer Or _
    ControlStyles.ResizeRedraw Or _
    ControlStyles.SupportsTransparentBackColor Or _
    ControlStyles.UserPaint, True)

    BackColor = Color.Transparent
    DoubleBuffered = True ' Reduce control flicker
    Font = New Font("Segoe UI", 10)
    Size = New Size(120, 26)
    End Sub

    Protected Overrides Sub OnClick(ByVal e As EventArgs)
    _Checked = Not _Checked
    RaiseEvent CheckedChanged(Me)
    Invalidate()
    MyBase.OnClick(e)
    End Sub

    Protected Overrides Sub OnTextChanged(ByVal e As System.EventArgs)
    Invalidate()
    MyBase.OnTextChanged(e)
    End Sub

    Protected Overrides Sub OnResize(ByVal e As System.EventArgs)
    If Width > 0 AndAlso Height > 0 Then
    Shape = New GraphicsPath

    R1 = New Rectangle(17, 0, Width, Height + 1)
    R2 = New Rectangle(0, 0, Width, Height)
    GB = New LinearGradientBrush(New Rectangle(0, 0, 25, 25), Color.FromArgb(250, 250, 250), Color.FromArgb(240, 240, 240), 90)

    With Shape
    .AddArc(0, 0, 7, 7, 180, 90)
    .AddArc(7, 0, 7, 7, -90, 90)
    .AddArc(7, 7, 7, 7, 0, 90)
    .AddArc(0, 7, 7, 7, 90, 90)
    .CloseAllFigures()
    End With
    Height = 15
    End If

    Invalidate()
    MyBase.OnResize(e)
    End Sub

    Protected Overrides Sub OnPaint(ByVal e As PaintEventArgs)
    MyBase.OnPaint(e)

    With e.Graphics
    .Clear(Color.FromArgb(246, 246, 246))
    .SmoothingMode = SmoothingMode.AntiAlias

    .FillPath(GB, Shape) ' Fill the body of the CheckBox
    .DrawPath(New Pen(Color.FromArgb(160, 160, 160)), Shape) ' Draw the border

    .DrawString(Text, Font, New SolidBrush(Color.FromArgb(142, 142, 142)), R1, New StringFormat() With {.LineAlignment = StringAlignment.Center})

    If Checked Then
    .DrawString("ü", New Font("Wingdings", 14), New SolidBrush(Color.FromArgb(142, 142, 142)), New Rectangle(-2, 1, Width, Height), New StringFormat() With {.LineAlignment = StringAlignment.Center})
    End If
    End With
    e.Dispose()
    End Sub
    End Class

    #End Region
    #Region " RadioButton "

    <DefaultEvent("CheckedChanged")> Class iTalk_RadioButton
    Inherits Control

    #Region " Enums "

    Enum MouseState As Byte
    None = 0
    Over = 1
    Down = 2
    Block = 3
    End Enum

    #End Region
    #Region " Variables "

    Private _Checked As Boolean
    Event CheckedChanged(ByVal sender As Object)

    #End Region
    #Region " Properties "

    Property Checked() As Boolean
    Get
    Return _Checked
    End Get
    Set(ByVal value As Boolean)
    _Checked = value
    InvalidateControls()
    RaiseEvent CheckedChanged(Me)
    Invalidate()
    End Set
    End Property

    #End Region
    #Region " EventArgs "

    Protected Overrides Sub OnTextChanged(ByVal e As System.EventArgs)
    Invalidate()
    MyBase.OnTextChanged(e)
    End Sub

    Protected Overrides Sub OnResize(e As EventArgs)
    MyBase.OnResize(e)
    Height = 15
    End Sub

    Protected Overrides Sub OnMouseDown(ByVal e As System.Windows.Forms.MouseEventArgs)
    If Not _Checked Then Checked = True
    MyBase.OnMouseDown(e)
    End Sub

    #End Region

    Sub New()
    SetStyle(ControlStyles.AllPaintingInWmPaint Or _
    ControlStyles.OptimizedDoubleBuffer Or _
    ControlStyles.ResizeRedraw Or _
    ControlStyles.SupportsTransparentBackColor Or _
    ControlStyles.UserPaint, True)
    BackColor = Color.Transparent
    Font = New Font("Segoe UI", 10)
    Width = 132
    End Sub

    Private Sub InvalidateControls()
    If Not IsHandleCreated OrElse Not _Checked Then Return

    For Each _Control As Control In Parent.Controls
    If _Control IsNot Me AndAlso TypeOf _Control Is iTalk_RadioButton Then
    DirectCast(_Control, iTalk_RadioButton).Checked = False
    End If
    Next
    End Sub

    Protected Overrides Sub OnPaint(ByVal e As PaintEventArgs)
    MyBase.OnPaint(e)
    With e.Graphics

    .Clear(Color.FromArgb(246, 246, 246))
    .SmoothingMode = SmoothingMode.AntiAlias

    ' Fill the body of the ellipse with a gradient
    Dim LGB As New LinearGradientBrush(New Rectangle(New Point(0, 0), New Size(14, 14)), Color.FromArgb(250, 250, 250), Color.FromArgb(240, 240, 240), 90)
    .FillEllipse(LGB, New Rectangle(New Point(0, 0), New Size(14, 14)))

    Dim GP As New GraphicsPath()
    GP.AddEllipse(New Rectangle(0, 0, 14, 14))
    .SetClip(GP)
    .ResetClip()

    ' Draw ellipse border
    .DrawEllipse(New Pen(Color.FromArgb(160, 160, 160)), New Rectangle(New Point(0, 0), New Size(14, 14)))

    If _Checked Then ' Draw an ellipse inside the body
    Dim EllipseColor As New SolidBrush(Color.FromArgb(142, 142, 142))
    .FillEllipse(EllipseColor, New Rectangle(New Point(4, 4), New Size(6, 6)))
    End If
    .DrawString(Text, Font, New SolidBrush(Color.FromArgb(142, 142, 142)), 16, 8, New StringFormat() With {.LineAlignment = StringAlignment.Center})
    End With
    e.Dispose()
    End Sub
    End Class

    #End Region
    #Region " Notification Number "

    Class iTalk_NotificationNumber
    Inherits Control

    #Region " Variables "

    Private _Value As Integer = 0
    Private _Maximum As Integer = 99

    #End Region
    #Region " Properties "

    Public Property Value() As Integer
    Get
    Select Case _Value
    Case 0
    Return 0
    Case Else
    Return _Value
    End Select
    End Get
    Set(ByVal i As Integer)
    Select Case i
    Case Is > _Maximum
    i = _Maximum
    End Select
    _Value = i
    Invalidate()
    End Set
    End Property

    Public Property Maximum() As Integer
    Get
    Return _Maximum
    End Get
    Set(ByVal i As Integer)
    Select Case i
    Case Is < _Value
    _Value = i
    End Select
    _Maximum = i
    Invalidate()
    End Set
    End Property

    #End Region

    Sub New()
    SetStyle(ControlStyles.SupportsTransparentBackColor, True)
    SetStyle(ControlStyles.UserPaint, True)

    Text = Nothing
    DoubleBuffered = True
    End Sub

    Protected Overrides Sub OnResize(e As EventArgs)
    MyBase.OnResize(e)
    ' Make the width and height of the control unchangeable
    Height = 20
    Width = 20
    End Sub

    Protected Overrides Sub OnPaint(ByVal e As PaintEventArgs)
    MyBase.OnPaint(e)
    With e.Graphics
    .Clear(BackColor)
    .SmoothingMode = SmoothingMode.AntiAlias

    Dim LGB As New LinearGradientBrush(New Rectangle(New Point(0, 0), New Size(18, 20)), Color.FromArgb(197, 69, 68), Color.FromArgb(176, 52, 52), 90.0F)

    .FillEllipse(LGB, New Rectangle(New Point(0, 0), New Size(18, 18)))
    .DrawEllipse(New Pen(Color.FromArgb(205, 70, 66)), New Rectangle(New Point(0, 0), New Size(18, 18))) ' Draw border
    .DrawString(_Value, New Font("Segoe UI", 8, FontStyle.Bold), New SolidBrush(Color.FromArgb(255, 255, 253)), New Rectangle(0, 0, Width - 2, Height), New StringFormat() With {.Alignment = StringAlignment.Center, .LineAlignment = StringAlignment.Center})
    End With
    e.Dispose()
    End Sub
    End Class

    #End Region
    #Region " ListView "

    Class iTalk_Listview
    Inherits ListView

    <DllImport("uxtheme", CharSet:=CharSet.Unicode)> _
    Public Shared Function SetWindowTheme(ByVal hWnd As IntPtr, ByVal textSubAppName As String, ByVal textSubIdList As String) As Integer
    End Function

    Public Sub New()
    Me.SetStyle(ControlStyles.OptimizedDoubleBuffer, True)
    Me.DoubleBuffered = True
    HeaderStyle = ColumnHeaderStyle.Nonclickable
    BorderStyle = Windows.Forms.BorderStyle.None ' Add the control to iTalk_Panel then full-dock it
    End Sub

    Protected Overrides Sub OnHandleCreated(ByVal e As EventArgs)
    iTalk_Listview.SetWindowTheme(Me.Handle, "explorer", Nothing)
    MyBase.OnHandleCreated(e)
    End Sub
    End Class

    #End Region
    #Region " ComboBox "

    Class iTalk_ComboBox
    Inherits ComboBox

    #Region " Variables "

    Private _StartIndex As Integer = 0
    Private _HoverSelectionColor As Color = Color.FromArgb(241, 241, 241)

    #End Region
    #Region " Custom Properties "

    Public Property StartIndex As Integer
    Get
    Return _StartIndex
    End Get
    Set(ByVal value As Integer)
    _StartIndex = value
    Try
    MyBase.SelectedIndex = value
    Catch
    End Try
    Invalidate()
    End Set
    End Property

    Public Property HoverSelectionColor As Color
    Get
    Return _HoverSelectionColor
    End Get
    Set(value As Color)
    _HoverSelectionColor = value
    Invalidate()
    End Set
    End Property

    #End Region
    #Region " EventArgs "

    Protected Overrides Sub OnDrawItem(e As DrawItemEventArgs)
    If (e.State And DrawItemState.Selected) = DrawItemState.Selected Then
    e.Graphics.FillRectangle(New SolidBrush(_HoverSelectionColor), e.Bounds)
    Else
    e.Graphics.FillRectangle(Brushes.White, e.Bounds)
    End If

    If Not e.Index = -1 Then
    e.Graphics.DrawString(GetItemText(Items(e.Index)), e.Font, Brushes.DimGray, e.Bounds)
    End If
    End Sub

    Protected Overrides Sub OnLostFocus(e As EventArgs)
    MyBase.OnLostFocus(e)
    SuspendLayout()
    Update()
    ResumeLayout()
    End Sub

    Protected Overrides Sub OnPaintBackground(e As PaintEventArgs)
    MyBase.OnPaintBackground(e)
    End Sub

    #End Region

    Sub New()
    SetStyle(DirectCast(139286, ControlStyles), True)
    SetStyle(ControlStyles.Selectable, False)

    DrawMode = Windows.Forms.DrawMode.OwnerDrawFixed
    DropDownStyle = ComboBoxStyle.DropDownList

    BackColor = Color.FromArgb(246, 246, 246)
    ForeColor = Color.FromArgb(142, 142, 142)
    Size = New Size(135, 26)
    ItemHeight = 20
    DropDownHeight = 100
    Font = New Font("Segoe UI", 10, FontStyle.Regular)
    End Sub

    Protected Overrides Sub OnPaint(ByVal e As PaintEventArgs)
    MyBase.OnPaint(e)
    Dim LGB As LinearGradientBrush
    Dim GP As GraphicsPath

    e.Graphics.Clear(BackColor)
    e.Graphics.SmoothingMode = SmoothingMode.AntiAlias

    ' Create a curvy border
    GP = RoundRectangle.RoundRect(0, 0, Width - 1, Height - 1, 5)
    ' Fills the body of the rectangle with a gradient
    LGB = New LinearGradientBrush(ClientRectangle, Color.FromArgb(241, 241, 241), Color.FromArgb(241, 241, 241), 90.0F)

    e.Graphics.SetClip(GP)
    e.Graphics.FillRectangle(LGB, ClientRectangle)
    e.Graphics.ResetClip()

    ' Draw rectangle border
    e.Graphics.DrawPath(New Pen(Color.FromArgb(204, 204, 204)), GP)
    ' Draw string
    e.Graphics.DrawString(Text, Font, New SolidBrush(Color.FromArgb(142, 142, 142)), New Rectangle(3, 0, Width - 20, Height), New StringFormat With {.LineAlignment = StringAlignment.Center, .Alignment = StringAlignment.Near})

    ' Draw the dropdown arrow
    e.Graphics.DrawLine(New Pen(Color.FromArgb(160, 160, 160), 2), New Point(Width - 18, 10), New Point(Width - 14, 14))
    e.Graphics.DrawLine(New Pen(Color.FromArgb(160, 160, 160), 2), New Point(Width - 14, 14), New Point(Width - 10, 10))
    e.Graphics.DrawLine(New Pen(Color.FromArgb(160, 160, 160)), New Point(Width - 14, 15), New Point(Width - 14, 14))

    GP.Dispose()
    LGB.Dispose()
    End Sub
    End Class

    #End Region
    #Region " Circular ProgressBar "

    Public Class iTalk_ProgressBar
    Inherits Control

    #Region " Enums "

    Enum _ProgressShape
    Round
    Flat
    End Enum

    #End Region
    #Region " Variables "

    Private _Value As Long
    Private _Maximum As Long = 100
    Private _ProgressColor1 As Color = Color.FromArgb(92, 92, 92)
    Private _ProgressColor2 As Color = Color.FromArgb(92, 92, 92)
    Private ProgressShapeVal As _ProgressShape

    #End Region
    #Region " Custom Properties "

    Public Property Value() As Long
    Get
    Return _Value
    End Get
    Set(ByVal val As Long)
    If val > _Maximum Then val = _Maximum
    _Value = val
    Invalidate()
    End Set
    End Property

    Public Property Maximum() As Long
    Get
    Return _Maximum
    End Get
    Set(ByVal val As Long)
    If val < 1 Then val = 1
    _Maximum = val
    Invalidate()
    End Set
    End Property

    Public Property ProgressColor1 As Color
    Get
    Return _ProgressColor1
    End Get
    Set(value As Color)
    _ProgressColor1 = value
    Invalidate()
    End Set
    End Property

    Public Property ProgressColor2 As Color
    Get
    Return _ProgressColor2
    End Get
    Set(value As Color)
    _ProgressColor2 = value
    Invalidate()
    End Set
    End Property

    Public Property ProgressShape As _ProgressShape
    Get
    Return ProgressShapeVal
    End Get
    Set(value As _ProgressShape)
    ProgressShapeVal = value
    Invalidate()
    End Set
    End Property

    #End Region
    #Region " EventArgs "

    Protected Overrides Sub OnResize(e As EventArgs)
    MyBase.OnResize(e)
    SetStandardSize()
    End Sub

    Protected Overrides Sub OnSizeChanged(e As EventArgs)
    MyBase.OnSizeChanged(e)
    SetStandardSize()
    End Sub

    Protected Overrides Sub OnPaintBackground(ByVal p As PaintEventArgs)
    MyBase.OnPaintBackground(p)
    End Sub

    #End Region

    Sub New()
    Size = New Size(130, 130)
    Font = New Font("Segoe UI", 15)
    MinimumSize = New Size(100, 100)
    DoubleBuffered = True ' Reduce flicker
    End Sub

    Private Sub SetStandardSize()
    Dim _Size As Integer = Math.Max(Width, Height)
    Size = New Size(_Size, _Size)
    End Sub

    Public Sub Increment(Value As Integer)
    Me._Value += Value
    Invalidate()
    End Sub

    Public Sub Decrement(Value As Integer)
    Me._Value -= Value
    Invalidate()
    End Sub

    Protected Overrides Sub OnPaint(ByVal e As PaintEventArgs)
    MyBase.OnPaint(e)

    Using B As New Bitmap(Width, Height) ' Create an image buffer
    Using G As Graphics = Graphics.FromImage(B)

    G.SmoothingMode = SmoothingMode.AntiAlias
    G.Clear(BackColor)

    Using LGB As New LinearGradientBrush(ClientRectangle, _ProgressColor1, _ProgressColor2, LinearGradientMode.ForwardDiagonal)
    Using P As New Pen(LGB, 14)

    Select Case ProgressShapeVal
    Case _ProgressShape.Round
    P.StartCap = LineCap.Round
    P.EndCap = LineCap.Round
    Case _ProgressShape.Flat
    P.StartCap = LineCap.Flat
    P.EndCap = LineCap.Flat
    End Select

    G.DrawArc(P, CInt(35 / 2), CInt(35 / 2), Width - 35 - 2, Height - 35 - 2, -90, CInt((360 / _Maximum) * _Value))
    End Using
    End Using

    ' Draw progress base/center object
    Using LGB As New LinearGradientBrush(ClientRectangle, Color.FromArgb(52, 52, 52), Color.FromArgb(52, 52, 52), LinearGradientMode.Vertical)
    G.FillEllipse(LGB, 24, 24, Width - 24 * 2 - 1, Height - 24 * 2 - 1)
    End Using

    ' Draw progress value
    Dim MS As SizeF = G.MeasureString(CStr(CInt((100 / _Maximum) * _Value)), Font)
    G.DrawString(CStr(CInt((100 / _Maximum) * _Value)), Font, Brushes.White, CInt(Width / 2 - MS.Width / 2), CInt(Height / 2 - MS.Height / 2))

    e.Graphics.DrawImage(B, 0, 0) ' Create the output
    ' Dispose drawing objects when finished
    G.Dispose()
    B.Dispose()
    End Using
    End Using
    End Sub
    End Class

    #End Region
    #Region " Progress Indicator "

    Class iTalk_ProgressIndicator
    Inherits Control

    #Region " Variables "

    Private ReadOnly BaseColor As New SolidBrush(Color.DarkGray)
    Private ReadOnly AnimationColor As New SolidBrush(Color.DimGray)
    Private ReadOnly AnimationSpeed As New Timer()

    Private FloatPoint As PointF()
    Private BuffGraphics As BufferedGraphics
    Private IndicatorIndex As Integer
    Private ReadOnly GraphicsContext As BufferedGraphicsContext = BufferedGraphicsManager.Current

    #End Region
    #Region " Custom Properties "

    Public Property P_BaseColor() As Color
    Get
    Return BaseColor.Color
    End Get
    Set(val As Color)
    BaseColor.Color = val
    End Set
    End Property

    Public Property P_AnimationColor() As Color
    Get
    Return AnimationColor.Color
    End Get
    Set(val As Color)
    AnimationColor.Color = val
    End Set
    End Property

    Public Property P_AnimationSpeed() As Integer
    Get
    Return AnimationSpeed.Interval
    End Get
    Set(val As Integer)
    AnimationSpeed.Interval = val
    End Set
    End Property

    #End Region
    #Region " EventArgs "

    Protected Overrides Sub OnSizeChanged(e As EventArgs)
    MyBase.OnSizeChanged(e)
    SetStandardSize()
    UpdateGraphics()
    SetPoints()
    End Sub

    Protected Overrides Sub OnEnabledChanged(e As EventArgs)
    MyBase.OnEnabledChanged(e)
    AnimationSpeed.Enabled = Me.Enabled
    End Sub

    Protected Overrides Sub OnHandleCreated(e As EventArgs)
    MyBase.OnHandleCreated(e)
    AddHandler AnimationSpeed.Tick, AddressOf AnimationSpeed_Tick
    AnimationSpeed.Start()
    End Sub

    Private Sub AnimationSpeed_Tick(sender As Object, e As EventArgs)
    If IndicatorIndex.Equals(0) Then
    IndicatorIndex = FloatPoint.Length - 1
    Else
    IndicatorIndex -= 1
    End If
    Me.Invalidate(False)
    End Sub

    #End Region

    Public Sub New()
    Me.SetStyle(ControlStyles.AllPaintingInWmPaint Or _
    ControlStyles.UserPaint Or _
    ControlStyles.ResizeRedraw Or _
    ControlStyles.OptimizedDoubleBuffer, True)

    Size = New Size(80, 80)
    Text = String.Empty
    MinimumSize = New Size(80, 80)
    SetPoints()
    AnimationSpeed.Interval = 100
    End Sub

    Private Sub SetStandardSize()
    Dim _Size As Integer = Math.Max(Width, Height)
    Size = New Size(_Size, _Size)
    End Sub

    Private Sub SetPoints()
    Dim FPStack = New Stack(Of PointF)()
    Dim centerPoint As New PointF(Me.Width / 2.0F, Me.Height / 2.0F)
    Dim i As Single = 0

    While i < 360.0F
    SetValue(centerPoint, Me.Width / 2 - 15, i)
    Dim FP As PointF = EndPoint
    FP = New PointF(FP.X - 15 / 2.0F, FP.Y - 15 / 2.0F)
    FPStack.Push(FP)
    i += 360.0F / 8
    End While
    FloatPoint = FPStack.ToArray()
    End Sub

    Private Sub UpdateGraphics()
    If Me.Width > 0 AndAlso Me.Height > 0 Then
    GraphicsContext.MaximumBuffer = New Size(Me.Width + 1, Me.Height + 1)
    BuffGraphics = GraphicsContext.Allocate(Me.CreateGraphics(), Me.ClientRectangle)
    BuffGraphics.Graphics.SmoothingMode = SmoothingMode.AntiAlias
    End If
    End Sub

    Protected Overrides Sub OnPaint(e As PaintEventArgs)
    MyBase.OnPaint(e)
    BuffGraphics.Graphics.Clear(Me.BackColor)

    For i As Integer = 0 To FloatPoint.Length - 1
    If IndicatorIndex = i Then
    BuffGraphics.Graphics.FillEllipse(AnimationColor, FloatPoint(i).X, FloatPoint(i).Y, 15, 15)
    Else
    BuffGraphics.Graphics.FillEllipse(BaseColor, FloatPoint(i).X, FloatPoint(i).Y, 15, 15)
    End If
    Next
    BuffGraphics.Render(e.Graphics)
    End Sub

    Private Rise As Double, Run As Double
    Private _StartingFloatPoint As PointF

    Private Function AssignValues(Of X)(ByRef Run As X, Length As X) As X
    Run = Length
    Return Length
    End Function

    Private Sub SetValue(StartingFloatPoint As PointF, Length As Integer, Angle As Double)
    Dim CircleRadian As Double = Math.PI * Angle / 180.0

    _StartingFloatPoint = StartingFloatPoint
    Rise = AssignValues(Run, Length)
    Rise = Math.Sin(CircleRadian) * Rise
    Run = Math.Cos(CircleRadian) * Run
    End Sub

    Private ReadOnly Property EndPoint() As PointF
    Get
    Dim LocationX As Single = CSng(_StartingFloatPoint.Y + Rise)
    Dim LocationY As Single = CSng(_StartingFloatPoint.X + Run)

    Return New PointF(LocationY, LocationX)
    End Get
    End Property
    End Class

    #End Region
    #Region " TabControl "

    Class iTalk_TabControl
    Inherits TabControl

    ' NOTE: For best quality icons/images on the TabControl; from the associated ImageList, set
    ' the image size (24,24) so it can fit in the tab rectangle. However, to ensure a
    ' high-quality image drawing, make sure you only add (32,32) images and not (24,24) as
    ' determined in the ImageList

    ' INFO: A free, non-commercial icon list that would fit in perfectly with the TabControl is
    ' Wireframe Toolbar Icons by Gentleface. Licensed under Creative Commons Attribution.
    ' Check it out from here: Free toolbar icons for interface or gui designer. Download free black & white toolbar icon set

    Sub New()
    SetStyle(ControlStyles.AllPaintingInWmPaint Or _
    ControlStyles.UserPaint Or _
    ControlStyles.ResizeRedraw Or _
    ControlStyles.DoubleBuffer, True)

    DoubleBuffered = True
    SizeMode = TabSizeMode.Fixed
    ItemSize = New Size(44, 135)
    DrawMode = TabDrawMode.OwnerDrawFixed

    For Each Page As TabPage In Me.TabPages
    Page.BackColor = Color.FromArgb(246, 246, 246)
    Next
    End Sub

    Protected Overrides Sub OnControlAdded(ByVal e As ControlEventArgs)
    MyBase.OnControlAdded(e)
    If TypeOf e.Control Is TabPage Then
    For Each i As TabPage In Me.Controls
    i = New TabPage
    Next
    e.Control.BackColor = Color.FromArgb(246, 246, 246)
    End If
    End Sub

    Protected Overrides Sub CreateHandle()
    MyBase.CreateHandle()

    MyBase.DoubleBuffered = True
    SizeMode = TabSizeMode.Fixed
    Appearance = TabAppearance.Normal
    Alignment = TabAlignment.Left
    End Sub

    Protected Overrides Sub OnPaint(ByVal e As PaintEventArgs)
    MyBase.OnPaint(e)
    Dim B As New Bitmap(Width, Height)
    Dim G As Graphics = Graphics.FromImage(B)

    With G

    .Clear(Color.FromArgb(246, 246, 246))
    .SmoothingMode = SmoothingMode.HighSpeed
    .CompositingQuality = Drawing2D.CompositingQuality.HighSpeed
    .CompositingMode = Drawing2D.CompositingMode.SourceOver

    ' Draw tab selector background
    .FillRectangle(New SolidBrush(Color.FromArgb(54, 57, 64)), New Rectangle(-5, 0, ItemSize.Height + 4, Height))
    ' Draw vertical line at the end of the tab selector rectangle
    .DrawLine(New Pen(Color.FromArgb(25, 26, 28)), ItemSize.Height - 1, 0, ItemSize.Height - 1, Height)

    For TabIndex As Integer = 0 To TabCount - 1
    If TabIndex = SelectedIndex Then
    Dim TabRect As Rectangle = New Rectangle(New Point(GetTabRect(TabIndex).Location.X - 2, GetTabRect(TabIndex).Location.Y - 2), New Size(GetTabRect(TabIndex).Width + 3, GetTabRect(TabIndex).Height - 8))

    ' Draw background of the selected tab
    .FillRectangle(New SolidBrush(Color.FromArgb(35, 36, 38)), TabRect.X, TabRect.Y, TabRect.Width - 4, TabRect.Height + 3)
    ' Draw a tab highlighter on the background of the selected tab
    Dim TabHighlighter As Rectangle = New Rectangle(New Point(GetTabRect(TabIndex).X - 2, GetTabRect(TabIndex).Location.Y - IIf(TabIndex = 0, 1, 1)), New Size(4, GetTabRect(TabIndex).Height - 7))
    .FillRectangle(New SolidBrush(Color.FromArgb(89, 169, 222)), TabHighlighter)
    ' Draw tab text
    .DrawString(TabPages(TabIndex).Text, New Font(Font.FontFamily, Font.Size, FontStyle.Bold), New SolidBrush(Color.FromArgb(254, 255, 255)), New Rectangle(TabRect.Left + 40, TabRect.Top + 12, TabRect.Width - 40, TabRect.Height), New StringFormat With {.Alignment = StringAlignment.Near})

    If Me.ImageList IsNot Nothing Then
    Dim Index As Integer = TabPages(TabIndex).ImageIndex
    If Not Index = -1 Then
    .DrawImage(Me.ImageList.Images.Item(TabPages(TabIndex).ImageIndex), TabRect.X + 9, TabRect.Y + 6, 24, 24)
    End If
    End If

    Else

    Dim TabRect As Rectangle = New Rectangle(New Point(GetTabRect(TabIndex).Location.X - 2, GetTabRect(TabIndex).Location.Y - 2), New Size(GetTabRect(TabIndex).Width + 3, GetTabRect(TabIndex).Height - 8))
    ' Draw tab text
    .DrawString(TabPages(TabIndex).Text, New Font(Font.FontFamily, Font.Size, FontStyle.Bold), New SolidBrush(Color.FromArgb(159, 162, 167)), New Rectangle(TabRect.Left + 40, TabRect.Top + 12, TabRect.Width - 40, TabRect.Height), New StringFormat With {.Alignment = StringAlignment.Near})

    If Me.ImageList IsNot Nothing Then
    Dim Index As Integer = TabPages(TabIndex).ImageIndex
    If Not Index = -1 Then
    .DrawImage(Me.ImageList.Images.Item(TabPages(TabIndex).ImageIndex), TabRect.X + 9, TabRect.Y + 6, 24, 24)
    End If
    End If

    End If
    Next
    e.Graphics.SmoothingMode = SmoothingMode.HighQuality
    e.Graphics.InterpolationMode = InterpolationMode.HighQualityBicubic
    e.Graphics.CompositingQuality = CompositingQuality.HighQuality
    e.Graphics.DrawImage(B.Clone, 0, 0)
    G.Dispose()
    B.Dispose()
    End With
    End Sub
    End Class

    #End Region
    #Region " TrackBar "

    <DefaultEvent("ValueChanged")> Class iTalk_TrackBar
    Inherits Control

    #Region " Enums "

    Enum ValueDivisor
    By1 = 1
    By10 = 10
    By100 = 100
    By1000 = 1000
    End Enum

    #End Region
    #Region " Variables "

    Private PipeBorder, TrackBarHandle As GraphicsPath
    Private TrackBarHandleRect, ValueRect As Rectangle
    Private VlaueLGB, TrackBarHandleLGB As LinearGradientBrush
    Private Cap As Boolean
    Private ValueDrawer As Integer

    Private _Minimum As Integer = 0
    Private _Maximum As Integer = 10
    Private _Value As Integer = 0
    Private _ValueColour As Color = Color.FromArgb(224, 224, 224)
    Private _DrawHatch As Boolean = True
    Private _DrawValueString As Boolean = False
    Private _JumpToMouse As Boolean = False
    Private DividedValue As ValueDivisor = ValueDivisor.By1

    #End Region
    #Region " Custom Properties "

    Public Property Minimum() As Integer
    Get
    Return _Minimum
    End Get
    Set(ByVal value As Integer)

    If value >= _Maximum Then value = _Maximum - 10
    If _Value < value Then _Value = value

    _Minimum = value
    Invalidate()
    End Set
    End Property

    Public Property Maximum() As Integer
    Get
    Return _Maximum
    End Get
    Set(ByVal value As Integer)

    If value <= _Minimum Then value = _Minimum + 10
    If _Value > value Then _Value = value

    _Maximum = value
    Invalidate()
    End Set
    End Property

    Event ValueChanged()
    Public Property Value() As Integer
    Get
    Return _Value
    End Get
    Set(ByVal value As Integer)
    If _Value <> value Then
    If value < _Minimum Then
    _Value = _Minimum
    Else
    If value > _Maximum Then
    _Value = _Maximum
    Else
    _Value = value
    End If
    End If
    Invalidate()
    RaiseEvent ValueChanged()
    End If
    End Set
    End Property

    Public Property ValueDivison() As ValueDivisor
    Get
    Return DividedValue
    End Get
    Set(ByVal Value As ValueDivisor)
    DividedValue = Value
    Invalidate()
    End Set
    End Property

    <Browsable(False)> Public Property ValueToSet() As Single
    Get
    Return CSng(_Value / DividedValue)
    End Get
    Set(ByVal Val As Single)
    Value = CInt(Val * DividedValue)
    End Set
    End Property

    Public Property ValueColour As Color
    Get
    Return _ValueColour
    End Get
    Set(value As Color)
    _ValueColour = value
    Invalidate()
    End Set
    End Property

    Property DrawHatch() As Boolean
    Get
    Return _DrawHatch
    End Get
    Set(ByVal v As Boolean)
    _DrawHatch = v
    Invalidate()
    End Set
    End Property

    Property DrawValueString() As Boolean
    Get
    Return _DrawValueString
    End Get
    Set(ByVal v As Boolean)
    _DrawValueString = v
    If _DrawValueString = True Then
    Height = 40
    Else
    Height = 22
    End If
    Invalidate()
    End Set
    End Property

    Public Property JumpToMouse() As Boolean
    Get
    Return _JumpToMouse
    End Get
    Set(ByVal value As Boolean)
    _JumpToMouse = value
    End Set
    End Property

    #End Region
    #Region " EventArgs "

    Protected Overrides Sub OnMouseMove(ByVal e As MouseEventArgs)
    MyBase.OnMouseMove(e)
    If Cap = True AndAlso e.X > -1 AndAlso e.X < (Width + 1) Then
    Value = _Minimum + CInt((_Maximum - _Minimum) * (e.X / Width))
    End If
    End Sub

    Protected Overrides Sub OnMouseDown(ByVal e As MouseEventArgs)
    MyBase.OnMouseDown(e)
    If e.Button = Windows.Forms.MouseButtons.Left Then
    ValueDrawer = CInt((_Value - _Minimum) / (_Maximum - _Minimum) * (Width - 11))
    TrackBarHandleRect = New Rectangle(ValueDrawer, 0, 10, 20)
    Cap = TrackBarHandleRect.Contains(e.Location)
    If _JumpToMouse Then
    Value = _Minimum + CInt((_Maximum - _Minimum) * (e.X / Width))
    End If
    End If
    End Sub

    Protected Overrides Sub OnMouseUp(ByVal e As MouseEventArgs)
    MyBase.OnMouseUp(e)
    Cap = False
    End Sub

    #End Region

    Sub New()
    SetStyle(ControlStyles.AllPaintingInWmPaint Or _
    ControlStyles.UserPaint Or _
    ControlStyles.ResizeRedraw Or _
    ControlStyles.DoubleBuffer, True)

    _DrawHatch = True
    Size = New Size(80, 22)
    MinimumSize = New Size(37, 22)
    End Sub

    Protected Overrides Sub OnResize(e As EventArgs)
    MyBase.OnResize(e)
    If _DrawValueString = True Then
    Height = 40
    Else
    Height = 22
    End If
    End Sub

    Protected Overrides Sub OnPaint(e As System.Windows.Forms.PaintEventArgs)
    MyBase.OnPaint(e)
    Dim G As Graphics = e.Graphics
    Dim Hatch As New HatchBrush(HatchStyle.WideDownwardDiagonal, Color.FromArgb(20, Color.Black), Color.Transparent)

    G.Clear(Parent.BackColor)
    G.SmoothingMode = SmoothingMode.AntiAlias

    PipeBorder = RoundRectangle.RoundRect(1, 6, Width - 3, 8, 3)

    Try
    ValueDrawer = CInt((_Value - _Minimum) / (_Maximum - _Minimum) * (Width - 11))
    Catch ex As Exception
    End Try

    TrackBarHandleRect = New Rectangle(ValueDrawer, 0, 10, 20)

    G.SetClip(PipeBorder) ' Set the clipping region of this Graphics to the specified GraphicsPath

    ValueRect = New Rectangle(1, 7, TrackBarHandleRect.X + TrackBarHandleRect.Width - 2, 7)
    VlaueLGB = New LinearGradientBrush(ValueRect, _ValueColour, _ValueColour, 90.0F)

    G.FillRectangle(VlaueLGB, ValueRect)

    If _DrawHatch = True Then
    G.FillRectangle(Hatch, ValueRect)
    End If

    G.ResetClip() ' Reset the clip region of this Graphics to an infinite region

    G.SmoothingMode = SmoothingMode.AntiAlias
    G.DrawPath(New Pen(Color.FromArgb(180, 180, 180)), PipeBorder) ' Draw pipe border

    TrackBarHandle = RoundRectangle.RoundRect(TrackBarHandleRect, 3)
    TrackBarHandleLGB = New LinearGradientBrush(ClientRectangle, SystemColors.Control, SystemColors.Control, 90.0F)

    ' Fill the handle body with the specified color gradient
    G.FillPath(TrackBarHandleLGB, TrackBarHandle)
    ' Draw handle borders
    G.DrawPath(New Pen(Color.FromArgb(180, 180, 180)), TrackBarHandle)

    If _DrawValueString = True Then
    G.DrawString(ValueToSet, Font, Brushes.Gray, 0, 25)
    End If
    End Sub
    End Class

    #End Region
    #Region " MenuStrip "

    Public Class iTalk_MenuStrip
    Inherits MenuStrip

    Public Sub New()
    Me.Renderer = New ControlRenderer()
    End Sub

    Public Overloads Property Renderer() As ControlRenderer
    Get
    Return DirectCast(MyBase.Renderer, ControlRenderer)
    End Get
    Set(ByVal value As ControlRenderer)
    MyBase.Renderer = value
    End Set
    End Property

    End Class

    #End Region
    #Region " ContextMenuStrip "

    Public Class iTalk_ContextMenuStrip
    Inherits ContextMenuStrip

    Public Sub New()
    Me.Renderer = New ControlRenderer()
    End Sub

    Public Overloads Property Renderer() As ControlRenderer
    Get
    Return DirectCast(MyBase.Renderer, ControlRenderer)
    End Get
    Set(ByVal value As ControlRenderer)
    MyBase.Renderer = value
    End Set
    End Property
    End Class

    #End Region
    #Region " StatusStrip "

    Public Class iTalk_StatusStrip
    Inherits StatusStrip

    Public Sub New()
    Me.Renderer = New ControlRenderer()
    SizingGrip = False
    End Sub

    Public Overloads Property Renderer() As ControlRenderer
    Get
    Return DirectCast(MyBase.Renderer, ControlRenderer)
    End Get
    Set(ByVal value As ControlRenderer)
    MyBase.Renderer = value
    End Set
    End Property
    End Class

    #End Region
    #Region " Info Icon "

    Class iTalk_Icon_Info
    Inherits Control
    Public Sub New()
    Me.ForeColor = Color.DimGray
    Me.BackColor = Color.FromArgb(246, 246, 246)
    Me.Size = New Size(33, 33)
    DoubleBuffered = True
    End Sub
    Protected Overrides Sub OnPaint(ByVal e As PaintEventArgs)
    e.Graphics.SmoothingMode = SmoothingMode.HighQuality
    e.Graphics.TextRenderingHint = TextRenderingHint.ClearTypeGridFit

    e.Graphics.FillEllipse(New SolidBrush(Color.Gray), New Rectangle(1, 1, 29, 29))
    e.Graphics.FillEllipse(New SolidBrush(Color.FromArgb(246, 246, 246)), New Rectangle(3, 3, 25, 25))

    e.Graphics.DrawString("?", New Font("Segoe UI", 25, FontStyle.Bold), New SolidBrush(Color.Gray), New Rectangle(4, -14, Width, 43), New StringFormat() With {.Alignment = StringAlignment.Near, .LineAlignment = StringAlignment.Near})
    End Sub
    End Class

    #End Region
    #Region " Tick Icon "

    Class iTalk_Icon_Tick
    Inherits Control

    Sub New()
    Me.ForeColor = Color.DimGray
    Me.BackColor = Color.FromArgb(246, 246, 246)
    Me.Size = New Size(33, 33)
    DoubleBuffered = True
    End Sub

    Protected Overrides Sub OnPaint(ByVal e As PaintEventArgs)
    e.Graphics.SmoothingMode = SmoothingMode.HighQuality
    e.Graphics.TextRenderingHint = TextRenderingHint.ClearTypeGridFit

    e.Graphics.FillEllipse(New SolidBrush(Color.Gray), New Rectangle(1, 1, 29, 29))
    e.Graphics.FillEllipse(New SolidBrush(Color.FromArgb(246, 246, 246)), New Rectangle(3, 3, 25, 25))

    e.Graphics.DrawString("ü", New Font("Wingdings", 25, FontStyle.Bold), New SolidBrush(Color.Gray), New Rectangle(0, -3, Width, 43), New StringFormat() With {.Alignment = StringAlignment.Near, .LineAlignment = StringAlignment.Near})
    End Sub
    End Class

    #End Region[/INFO]
     
  3. ♕| s c я є α м |♕

    ♕| s c я є α м |♕ مشرف

    الأنتساب:
    ‏23 ديسمبر 2014
    المشاركات:
    630
    الإعجابات المتلقاة:
    668
    نقاط الجائزة:
    93
    الإقامة:
    7
    رد: جمل مشاريعك بثيم رائع جدا .

    ثيم رائع جداااااااااااااااااااااا تسلم ياغالي :{1!}:
     
  4. Mr Archer

    Mr Archer DeveloPer Plus

    الأنتساب:
    ‏8 يوليو 2014
    المشاركات:
    165
    الإعجابات المتلقاة:
    10
    نقاط الجائزة:
    18
    رد: جمل مشاريعك بثيم رائع جدا .

    احسنت يمبدع بارك ربي بيك
     
  5. Dr-Dark Noir

    Dr-Dark Noir <span style="font-weight: bold; text-shadow: #BBBB V • I • P

    الأنتساب:
    ‏17 يوليو 2014
    المشاركات:
    442
    الإعجابات المتلقاة:
    16
    نقاط الجائزة:
    18
    الوظيفة:
    Student
    الإقامة:
    O M A N
    رد: جمل مشاريعك بثيم رائع جدا .

    وعليكم آلسلآم ورحمة آلله وبركآته

    تسلم آيدك يآلغآلي على ثيم رآئع و موضوع جميل جدآ [​IMG]

    وآصل ولآ تحرمنآ من جديدك {1!$7}​
     
  6. ! ـآوتآر !

    ! ـآوتآر ! DeveloPer Plus

    الأنتساب:
    ‏19 يوليو 2012
    المشاركات:
    192
    الإعجابات المتلقاة:
    1
    نقاط الجائزة:
    18
    الإقامة:
    السـ جــــده ـعوديـة
    رد: جمل مشاريعك بثيم رائع جدا .

    السسلام عليڪم ورحمة الله و برڪاته :|

    بارڪ الله فيڪ اخي

    موفقڪ ً#ٌ5oًًًُ.
     
  7. PROCESSEUR.DZ

    PROCESSEUR.DZ Developer

    الأنتساب:
    ‏16 ديسمبر 2011
    المشاركات:
    30
    الإعجابات المتلقاة:
    1
    نقاط الجائزة:
    8
    الوظيفة:
    مصلح حواسب
    الإقامة:
    {عقلية DZ}
    رد: جمل مشاريعك بثيم رائع جدا .

    مششكور الله يعطيك العاأآفيه..‘

    ماقصــرت ياغاآآلـي..‘
     
  8. AMMAR AL-SHAMI

    AMMAR AL-SHAMI Developer

    الأنتساب:
    ‏9 ابريل 2015
    المشاركات:
    148
    الإعجابات المتلقاة:
    2
    نقاط الجائزة:
    18
    الوظيفة:
    طالب جامعي
    رد: جمل مشاريعك بثيم رائع جدا .

    مشكور على المرور ي غالي
     
  9. AMMAR AL-SHAMI

    AMMAR AL-SHAMI Developer

    الأنتساب:
    ‏9 ابريل 2015
    المشاركات:
    148
    الإعجابات المتلقاة:
    2
    نقاط الجائزة:
    18
    الوظيفة:
    طالب جامعي
    رد: جمل مشاريعك بثيم رائع جدا .

    مشكور على المرور ي غالي
     
  10. AMMAR AL-SHAMI

    AMMAR AL-SHAMI Developer

    الأنتساب:
    ‏9 ابريل 2015
    المشاركات:
    148
    الإعجابات المتلقاة:
    2
    نقاط الجائزة:
    18
    الوظيفة:
    طالب جامعي
    رد: جمل مشاريعك بثيم رائع جدا .


    نورت الموضوع استازي ...... نواصل بأبداعكم ي غالي مشكووووور جدا على المرور
     

مشاركة هذه الصفحة