Vb.net FacebookGDI Teması

Durum
Üzgünüz bu konu cevaplar için kapatılmıştır...
Onaylı Üye
Katılım
4 Mar 2017
Mesajlar
51
Tepki puanı
4
Yaş
24
9 HİZMET YILI
Kod:
Imports System.Drawing.Text
Imports System.Drawing.Drawing2D
Imports System.ComponentModel
Imports System.Drawing.Design

''' <summary>
''' Facebook GDI Theme
''' Creator: Xertz (HF)
''' Version: 1.1
''' Date Created: 15/12/2013
''' Date Changed: 15/12/2013
''' UID: 1602992
''' For any bugs / errors, PM me.
''' </summary>
''' <remarks></remarks>

Module DrawHelpers

#Region "Functions"

    Dim Height As Integer
    Dim Width As Integer

    Public Function RoundRec(ByVal Rectangle As Rectangle, ByVal Curve As Integer) As GraphicsPath
        Dim P As GraphicsPath = New GraphicsPath()
        Dim ArcRectangleWidth As Integer = Curve * 2
        P.AddArc(New Rectangle(Rectangle.X, Rectangle.Y, ArcRectangleWidth, ArcRectangleWidth), -180, 90)
        P.AddArc(New Rectangle(Rectangle.Width - ArcRectangleWidth + Rectangle.X, Rectangle.Y, ArcRectangleWidth, ArcRectangleWidth), -90, 90)
        P.AddArc(New Rectangle(Rectangle.Width - ArcRectangleWidth + Rectangle.X, Rectangle.Height - ArcRectangleWidth + Rectangle.Y, ArcRectangleWidth, ArcRectangleWidth), 0, 90)
        P.AddArc(New Rectangle(Rectangle.X, Rectangle.Height - ArcRectangleWidth + Rectangle.Y, ArcRectangleWidth, ArcRectangleWidth), 90, 90)
        P.AddLine(New Point(Rectangle.X, Rectangle.Height - ArcRectangleWidth + Rectangle.Y), New Point(Rectangle.X, Curve + Rectangle.Y))
        Return P
    End Function

    Public Function RoundRect(x!, y!, w!, h!, Optional r! = 0.3, Optional TL As Boolean = True, Optional TR As Boolean = True, Optional BR As Boolean = True, Optional BL As Boolean = True) As GraphicsPath
        Dim d! = Math.Min(w, h) * r, xw = x + w, yh = y + h
        RoundRect = New GraphicsPath

        With RoundRect
            If TL Then .AddArc(x, y, d, d, 180, 90) Else .AddLine(x, y, x, y)
            If TR Then .AddArc(xw - d, y, d, d, 270, 90) Else .AddLine(xw, y, xw, y)
            If BR Then .AddArc(xw - d, yh - d, d, d, 0, 90) Else .AddLine(xw, yh, xw, yh)
            If BL Then .AddArc(x, yh - d, d, d, 90, 90) Else .AddLine(x, yh, x, yh)

            .CloseFigure()
        End With
    End Function

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

#End Region

End Module

Public Class FacebookThemeContainer
    Inherits ContainerControl

#Region "Declarations"
    Private _MainColour As Color = Color.FromArgb(252, 252, 252)
    Private _HeaderColour As Color = Color.FromArgb(67, 96, 156)
    Private _BorderColour As Color = Color.DarkGray
    Private _MainBrushColour As New SolidBrush(_MainColour)
    Private _HeaderBrushColour As New SolidBrush(_HeaderColour)
    Private F As New Font("Tahoma", 13, FontStyle.Bold)
    Private Cap As Boolean = False
    Private MoveHeight As Integer = 45
    Private MouseP As Point = New Point(0, 0)
#End Region

#Region "Mouse States"
    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
#End Region

#Region "Colour Properties"
    <Category("Colours")>
    Public Property BaseColour As Color
        Get
            Return _MainColour
        End Get
        Set(value As Color)
            _MainColour = value
        End Set
    End Property

    <Category("Colours")>
    Public Property HeaderColour As Color
        Get
            Return _HeaderColour
        End Get
        Set(value As Color)
            _HeaderColour = value
        End Set
    End Property

    <Category("Colours")>
    Public Property BorderColour As Color
        Get
            Return _BorderColour
        End Get
        Set(value As Color)
            _BorderColour = value
        End Set
    End Property

#End Region

#Region "Draw Control"
    Sub New()

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

        Me.DoubleBuffered = True
        Me.BackColor = _MainColour
        Me.Dock = DockStyle.Fill
    End Sub

    Protected Overrides Sub OnCreateControl()
        MyBase.OnCreateControl()
        ParentForm.FormBorderStyle = FormBorderStyle.None
        ParentForm.AllowTransparency = False
        ParentForm.TransparencyKey = Color.Fuchsia
        ParentForm.FindForm.StartPosition = FormStartPosition.CenterScreen
        Dock = DockStyle.Fill
        Invalidate()
    End Sub

    Protected Overrides Sub OnPaint(e As PaintEventArgs)
        Dim G As Graphics
        G = e.Graphics
        G.SmoothingMode = SmoothingMode.HighQuality
        G.FillRectangle(_HeaderBrushColour, New Rectangle(-1, -1, Me.Width + 1, 45))
        G.DrawLine(New Pen(New SolidBrush(_BorderColour)), New Point(-1, 45), New Point(Me.Width - 1, 45))
        G.DrawRectangle(New Pen(New SolidBrush(_BorderColour)), New Rectangle(0, 0, Width - 1, Height - 1))
        Dim I As Bitmap = Me.ParentForm.Icon.ToBitmap
        Dim IM As Image = I
        Dim FormText As String = Me.ParentForm.Text
        G.TextRenderingHint = TextRenderingHint.AntiAlias
        G.DrawString(FormText, F, New SolidBrush(Color.FromArgb(220, 220, 220)), New Point(43, 11))
        G.DrawImage(IM, New Rectangle(8, 6, 32, 32))
        MyBase.OnPaint(e)
        I.Dispose()
        IM.Dispose()
    End Sub
#End Region

End Class

Public Class FacebookButton
    Inherits Control

#Region "Declarations"
    Private State As MouseState = MouseState.None
    Private _MainColour As Color = Color.FromArgb(70, 98, 158)
    Private _TextColour As Color = Color.FromArgb(255, 255, 255)
    Private _HoverColour As Color = Color.FromArgb(55, 83, 158)
#End Region

#Region "Mouse States"

    Protected Overrides Sub OnMouseDown(e As MouseEventArgs)
        MyBase.OnMouseDown(e)
        State = MouseState.Down : Invalidate()
    End Sub
    Protected Overrides Sub OnMouseUp(e As MouseEventArgs)
        MyBase.OnMouseUp(e)
        State = MouseState.Over : Invalidate()
    End Sub
    Protected Overrides Sub OnMouseEnter(e As EventArgs)
        MyBase.OnMouseEnter(e)
        State = MouseState.Over : Invalidate()
    End Sub
    Protected Overrides Sub OnMouseLeave(e As EventArgs)
        MyBase.OnMouseLeave(e)
        State = MouseState.None : Invalidate()
    End Sub

#End Region

#Region "Colour Properties"

    <Category("Colours"), Description("Background Colour Selection")> _
    Public Property BackgroundColour As Color
        Get
            Return _MainColour
        End Get
        Set(value As Color)
            _MainColour = value
        End Set
    End Property

    <Category("Colours"), Description("Text Colour Selection")> _
    Public Property TextColour As Color
        Get
            Return _TextColour
        End Get
        Set(value As Color)
            _TextColour = value
        End Set
    End Property

#End Region

#Region "Draw Control"

    Sub New()
        SetStyle(ControlStyles.AllPaintingInWmPaint Or ControlStyles.UserPaint Or _
                ControlStyles.ResizeRedraw Or ControlStyles.OptimizedDoubleBuffer Or _
                ControlStyles.SupportsTransparentBackColor, True)
        DoubleBuffered = True
        Size = New Size(135, 32)
        BackColor = Color.Transparent
        Font = New Font("Klavika", 9)
    End Sub

    Protected Overrides Sub OnPaint(e As PaintEventArgs)
        Dim B As New Bitmap(Width, Height)
        Dim G = Graphics.FromImage(B)
        Dim GP, GP1 As New GraphicsPath
        Dim Base As New Rectangle(0, 0, Width - 1, Height - 1)
        With G
            .TextRenderingHint = TextRenderingHint.ClearTypeGridFit
            .SmoothingMode = SmoothingMode.HighQuality
            .PixelOffsetMode = PixelOffsetMode.HighQuality
            .Clear(BackColor)
            Select Case State
                Case MouseState.None
                    GP = DrawHelpers.RoundRec(Base, 2)
                    .FillPath(New SolidBrush(_MainColour), GP)
                    .DrawString(Text, Font, New SolidBrush(_TextColour), Base, New StringFormat With {.LineAlignment = StringAlignment.Center, .Alignment = StringAlignment.Center})
                Case MouseState.Over
                    GP = DrawHelpers.RoundRec(Base, 2)
                    .FillPath(New SolidBrush(_HoverColour), GP)
                    .DrawString(Text, Font, New SolidBrush(_TextColour), Base, New StringFormat With {.LineAlignment = StringAlignment.Center, .Alignment = StringAlignment.Center})
                Case MouseState.Down
                    GP = DrawHelpers.RoundRec(Base, 2)
                    .FillPath(New SolidBrush(_HoverColour), GP)
                    .DrawString(Text, Font, New SolidBrush(_TextColour), Base, New StringFormat With {.LineAlignment = StringAlignment.Center, .Alignment = StringAlignment.Center})
                    GP1 = DrawHelpers.RoundRec(New Rectangle(0, 0, Width, Height), 3)
                    .DrawPath(New Pen(New SolidBrush(Color.LightYellow), 2), GP1)
            End Select
        End With
        MyBase.OnPaint(e)
        e.Graphics.InterpolationMode = InterpolationMode.HighQualityBicubic
        e.Graphics.DrawImageUnscaled(B, 0, 0)
        B.Dispose()
    End Sub

#End Region

End Class

<DefaultEvent("TextChanged")>
Public Class FacebookTextBox
    Inherits Control

#Region "Declarations"
    Private State As MouseState = MouseState.None
    Private WithEvents TB As Windows.Forms.TextBox
    Private _BaseColour As Color = Color.FromArgb(255, 255, 255)
    Private _TextColour As Color = Color.FromArgb(50, 50, 50)
    Private _BorderColour As Color = Color.FromArgb(180, 187, 205)
#End Region

#Region "TextBox Properties"

    Private _TextAlign As HorizontalAlignment = HorizontalAlignment.Left
    <Category("Options")>
    Property TextAlign() As HorizontalAlignment
        Get
            Return _TextAlign
        End Get
        Set(ByVal value As HorizontalAlignment)
            _TextAlign = value
            If TB IsNot Nothing Then
                TB.TextAlign = value
            End If
        End Set
    End Property
    Private _MaxLength As Integer = 32767
    <Category("Options")>
    Property MaxLength() As Integer
        Get
            Return _MaxLength
        End Get
        Set(ByVal value As Integer)
            _MaxLength = value
            If TB IsNot Nothing Then
                TB.MaxLength = value
            End If
        End Set
    End Property
    Private _ReadOnly As Boolean
    <Category("Options")>
    Property [ReadOnly]() As Boolean
        Get
            Return _ReadOnly
        End Get
        Set(ByVal value As Boolean)
            _ReadOnly = value
            If TB IsNot Nothing Then
                TB.ReadOnly = value
            End If
        End Set
    End Property
    Private _UseSystemPasswordChar As Boolean
    <Category("Options")>
    Property UseSystemPasswordChar() As Boolean
        Get
            Return _UseSystemPasswordChar
        End Get
        Set(ByVal value As Boolean)
            _UseSystemPasswordChar = value
            If TB IsNot Nothing Then
                TB.UseSystemPasswordChar = value
            End If
        End Set
    End Property
    Private _Multiline As Boolean
    <Category("Options")>
    Property Multiline() As Boolean
        Get
            Return _Multiline
        End Get
        Set(ByVal value As Boolean)
            _Multiline = value
            If TB IsNot Nothing Then
                TB.Multiline = value

                If value Then
                    TB.Height = Height - 11
                Else
                    Height = TB.Height + 11
                End If

            End If
        End Set
    End Property
    <Category("Options")>
    Overrides Property Text As String
        Get
            Return MyBase.Text
        End Get
        Set(ByVal value As String)
            MyBase.Text = value
            If TB IsNot Nothing Then
                TB.Text = value
            End If
        End Set
    End Property
    <Category("Options")>
    Overrides Property Font As Font
        Get
            Return MyBase.Font
        End Get
        Set(ByVal value As Font)
            MyBase.Font = value
            If TB IsNot Nothing Then
                TB.Font = value
                TB.Location = New Point(3, 5)
                TB.Width = Width - 6

                If Not _Multiline Then
                    Height = TB.Height + 11
                End If
            End If
        End Set
    End Property

    Protected Overrides Sub OnCreateControl()
        MyBase.OnCreateControl()
        If Not Controls.Contains(TB) Then
            Controls.Add(TB)
        End If
    End Sub
    Private Sub OnBaseTextChanged(ByVal s As Object, ByVal e As EventArgs)
        Text = TB.Text
    End Sub
    Private Sub OnBaseKeyDown(ByVal s As Object, ByVal e As KeyEventArgs)
        If e.Control AndAlso e.KeyCode = Keys.A Then
            TB.SelectAll()
            e.SuppressKeyPress = True
        End If
        If e.Control AndAlso e.KeyCode = Keys.C Then
            TB.Copy()
            e.SuppressKeyPress = True
        End If
    End Sub
    Protected Overrides Sub OnResize(ByVal e As EventArgs)
        TB.Location = New Point(5, 5)
        TB.Width = Width - 10

        If _Multiline Then
            TB.Height = Height - 11
        Else
            Height = TB.Height + 11
        End If

        MyBase.OnResize(e)
    End Sub

#End Region

#Region "Colour Properties"

    <Category("Colours")>
    Public Property BackgroundColour As Color
        Get
            Return _BaseColour
        End Get
        Set(value As Color)
            _BaseColour = value
        End Set
    End Property

    <Category("Colours")>
    Public Property TextColour As Color
        Get
            Return _TextColour
        End Get
        Set(value As Color)
            _TextColour = value
        End Set
    End Property

    <Category("Colours")>
    Public Property BorderColour As Color
        Get
            Return _BorderColour
        End Get
        Set(value As Color)
            _BorderColour = value
        End Set
    End Property

#End Region

#Region "Mouse States"

    Protected Overrides Sub OnMouseDown(e As MouseEventArgs)
        MyBase.OnMouseDown(e)
        State = MouseState.Down : Invalidate()
    End Sub
    Protected Overrides Sub OnMouseUp(e As MouseEventArgs)
        MyBase.OnMouseUp(e)
        State = MouseState.Over : TB.Focus() : Invalidate()
    End Sub
    Protected Overrides Sub OnMouseLeave(e As EventArgs)
        MyBase.OnMouseLeave(e)
        State = MouseState.None : Invalidate()
    End Sub

#End Region

#Region "Draw Control"
    Sub New()
        SetStyle(ControlStyles.AllPaintingInWmPaint Or ControlStyles.UserPaint Or _
                 ControlStyles.ResizeRedraw Or ControlStyles.OptimizedDoubleBuffer Or _
                 ControlStyles.SupportsTransparentBackColor, True)
        DoubleBuffered = True
        BackColor = Color.Transparent
        TB = New Windows.Forms.TextBox
        TB.Font = New Font("Segoe UI", 10)
        TB.Text = Text
        TB.BackColor = _BaseColour
        TB.ForeColor = _TextColour
        TB.MaxLength = _MaxLength
        TB.Multiline = _Multiline
        TB.ReadOnly = _ReadOnly
        TB.UseSystemPasswordChar = _UseSystemPasswordChar
        TB.BorderStyle = BorderStyle.None
        TB.Location = New Point(5, 5)
        TB.Width = Width - 10
        If _Multiline Then
            TB.Height = Height - 11
        Else
            Height = TB.Height + 11
        End If
        AddHandler TB.TextChanged, AddressOf OnBaseTextChanged
        AddHandler TB.KeyDown, AddressOf OnBaseKeyDown
    End Sub

    Protected Overrides Sub OnPaint(e As PaintEventArgs)
        Dim B As New Bitmap(Width, Height)
        Dim G = Graphics.FromImage(B)
        Dim Base As New Rectangle(0, 0, Width - 1, Height - 1)
        With G
            .TextRenderingHint = TextRenderingHint.ClearTypeGridFit
            .SmoothingMode = SmoothingMode.HighQuality
            .PixelOffsetMode = PixelOffsetMode.HighQuality
            .Clear(BackColor)
            TB.BackColor = _BaseColour
            TB.ForeColor = _TextColour
            .FillRectangle(New SolidBrush(_BaseColour), Base)
            .DrawRectangle(New Pen(New SolidBrush(_BorderColour)), New Rectangle(0, 0, Width, Height))
        End With
        MyBase.OnPaint(e)
        G.Dispose()
        e.Graphics.InterpolationMode = 7
        e.Graphics.DrawImageUnscaled(B, 0, 0)
        B.Dispose()
    End Sub
#End Region

End Class

Public Class FacebookGroupBox
    Inherits ContainerControl

#Region "Declarations"
    Private _MainColour As Color = Color.FromArgb(237, 239, 244)
    Private _HeaderColour As Color = Color.FromArgb(109, 132, 180)
    Private _TextColour As Color = Color.FromArgb(255, 255, 255)
    Private _CircleColour As Color = Color.FromArgb(93, 170, 64)
    Private _BorderColour As Color = Color.FromArgb(14, 44, 109)
    Private _DrawCircle As Boolean = True
#End Region

#Region "Colour & Other Properties"
    <Category("Colours")>
    Public Property MainColour As Color
        Get
            Return _MainColour
        End Get
        Set(value As Color)
            _MainColour = value
        End Set
    End Property
    <Category("Colours")>
    Public Property HeaderColour As Color
        Get
            Return _HeaderColour
        End Get
        Set(value As Color)
            _HeaderColour = value
        End Set
    End Property
    <Category("Colours")>
    Public Property TextColour As Color
        Get
            Return _TextColour
        End Get
        Set(value As Color)
            _TextColour = value
        End Set
    End Property
    <Category("Colours")>
    Public Property CircleColour As Color
        Get
            Return _CircleColour
        End Get
        Set(value As Color)
            _CircleColour = value
        End Set
    End Property
    <Category("Colours")>
    Public Property BorderColour As Color
        Get
            Return _BorderColour
        End Get
        Set(value As Color)
            _BorderColour = value
        End Set
    End Property
    <Category("Misc")>
    Public Property DrawCircle As Boolean
        Get
            Return _DrawCircle
        End Get
        Set(value As Boolean)
            _DrawCircle = value
        End Set
    End Property
#End Region

#Region "Draw Control"
    Sub New()
        SetStyle(ControlStyles.AllPaintingInWmPaint Or ControlStyles.UserPaint Or _
               ControlStyles.ResizeRedraw Or ControlStyles.OptimizedDoubleBuffer Or _
               ControlStyles.SupportsTransparentBackColor, True)
        DoubleBuffered = True
        BackColor = Color.Transparent
        Size = New Size(160, 110)
        Font = New Font("Segoe UI", 10, FontStyle.Bold)
    End Sub

    Protected Overrides Sub OnPaint(e As PaintEventArgs)
        Dim B As New Bitmap(Width, Height)
        Dim G = Graphics.FromImage(B)
        Dim Base As New Rectangle(0, 0, Width - 1, Height - 1)
        Dim Circle As New Rectangle(8, 8, 10, 10)
        With G
            .TextRenderingHint = TextRenderingHint.ClearTypeGridFit
            .SmoothingMode = SmoothingMode.HighQuality
            .PixelOffsetMode = PixelOffsetMode.HighQuality
            .Clear(BackColor)
            .FillRectangle(New SolidBrush(_MainColour), Base)
            .FillRectangle(New SolidBrush(_HeaderColour), New Rectangle(0, 0, Width - 1, 26))
            .DrawRectangle(New Pen(New SolidBrush(_BorderColour)), New Rectangle(0, 0, Width, Height))
            If _DrawCircle Then
                .FillEllipse(New SolidBrush(_CircleColour), Circle)
                .DrawString(Text, Font, New SolidBrush(_TextColour), New Rectangle(23, 4, Width, Height), New StringFormat With {.Alignment = StringAlignment.Near, .LineAlignment = StringAlignment.Near})
            Else
                .DrawString(Text, Font, New SolidBrush(_TextColour), New Rectangle(5, 4, Width, Height), New StringFormat With {.Alignment = StringAlignment.Near, .LineAlignment = StringAlignment.Near})
            End If
        End With
        MyBase.OnPaint(e)
        G.Dispose()
        e.Graphics.InterpolationMode = 7
        e.Graphics.DrawImageUnscaled(B, 0, 0)
        B.Dispose()
    End Sub
#End Region

End Class

Public Class FacebookCloseButton
    Inherits Control

#Region "Declarations"
    Private State As MouseState = MouseState.None
    Private x As Integer
    Private _BackColour As Color = Color.FromArgb(67, 96, 156)
#End Region

#Region "Mouse States"

    Protected Overrides Sub OnMouseEnter(e As EventArgs)
        MyBase.OnMouseEnter(e)
        State = MouseState.Over : Invalidate()
    End Sub
    Protected Overrides Sub OnMouseDown(e As MouseEventArgs)
        MyBase.OnMouseDown(e)
        State = MouseState.Down : Invalidate()
    End Sub
    Protected Overrides Sub OnMouseLeave(e As EventArgs)
        MyBase.OnMouseLeave(e)
        State = MouseState.None : Invalidate()
    End Sub
    Protected Overrides Sub OnMouseUp(e As MouseEventArgs)
        MyBase.OnMouseUp(e)
        State = MouseState.Over : Invalidate()
    End Sub
    Protected Overrides Sub OnMouseMove(e As MouseEventArgs)
        MyBase.OnMouseMove(e)
        x = e.X : Invalidate()
    End Sub

    Protected Overrides Sub OnClick(e As EventArgs)
        MyBase.OnClick(e)
        Environment.Exit(0)
    End Sub

#End Region

#Region "Colour Properties"
    <Category("Colors")> _
    Public Property BaseColour As Color
        Get
            Return _BackColour
        End Get
        Set(value As Color)
            _BackColour = value
        End Set
    End Property
#End Region

#Region "Draw Control"
    Sub New()
        SetStyle(ControlStyles.AllPaintingInWmPaint Or ControlStyles.UserPaint Or _
                 ControlStyles.ResizeRedraw Or ControlStyles.OptimizedDoubleBuffer, True)
        DoubleBuffered = True
        BackColor = Color.White
        Size = New Size(20, 20)
        Anchor = AnchorStyles.Top Or AnchorStyles.Right
        Font = New Font("Marlett", 20)
    End Sub

    Protected Overrides Sub OnPaint(e As PaintEventArgs)
        Dim B As New Bitmap(Width, Height)
        Dim G As Graphics = Graphics.FromImage(B)
        Dim Base As New Rectangle(0, 0, Width, Height)
        With G
            .SmoothingMode = 2
            .PixelOffsetMode = 2
            .TextRenderingHint = 5
            .Clear(BackColor)
            .FillRectangle(New SolidBrush(_BackColour), Base)
            Select Case State
                Case MouseState.None
                    .DrawString("r", Font, New SolidBrush(Color.FromArgb(211, 218, 233)), New Rectangle(0, 0, Width, Height), New StringFormat With {.LineAlignment = StringAlignment.Center, .Alignment = StringAlignment.Center})
                Case MouseState.Over
                    .DrawString("r", Font, New SolidBrush(Color.FromArgb(151, 158, 172)), New Rectangle(0, 0, Width, Height), New StringFormat With {.LineAlignment = StringAlignment.Near, .Alignment = StringAlignment.Center})
            End Select
        End With
        MyBase.OnPaint(e)
        G.Dispose()
        e.Graphics.InterpolationMode = 7
        e.Graphics.DrawImageUnscaled(B, 0, 0)
        B.Dispose()
    End Sub
#End Region

End Class

Public Class FacebookTabControlVertical
    Inherits TabControl

#Region "Declarations"
    Private _PressedTabColour As Color = Color.FromArgb(200, 215, 237)
    Private _HoverColour As Color = Color.FromArgb(109, 132, 180)
    Private _NormalColour As Color = Color.FromArgb(237, 239, 244)
    Private _BorderColour As Color = Color.FromArgb(139, 162, 210)
    Private _TextColour As Color = Color.FromArgb(58, 66, 73)
    Private HoverIndex As Integer = -1
#End Region

#Region "Colour & Other Properties"
    <Category("Colours")>
    Public Property NormalColour As Color
        Get
            Return _NormalColour
        End Get
        Set(value As Color)
            _NormalColour = value
        End Set
    End Property
    <Category("Colours")>
    Public Property HoverColour As Color
        Get
            Return _HoverColour
        End Get
        Set(value As Color)
            _HoverColour = value
        End Set
    End Property
    <Category("Colours")>
    Public Property PressedTabColour As Color
        Get
            Return _PressedTabColour
        End Get
        Set(value As Color)
            _PressedTabColour = value
        End Set
    End Property
    <Category("Colours")>
    Public Property BorderColour As Color
        Get
            Return _BorderColour
        End Get
        Set(value As Color)
            _BorderColour = value
        End Set
    End Property
    <Category("Colours")>
    Public Property TextColour As Color
        Get
            Return _TextColour
        End Get
        Set(value As Color)
            _TextColour = value
        End Set
    End Property
#End Region

#Region "Draw Control"
    Sub New()
        DoubleBuffered = True
        SetStyle(ControlStyles.AllPaintingInWmPaint Or ControlStyles.ResizeRedraw Or ControlStyles.OptimizedDoubleBuffer Or ControlStyles.UserPaint, True)
        SizeMode = TabSizeMode.Fixed
        ItemSize = New Size(44, 95)
        Font = New Font("Segoe UI", 9, FontStyle.Regular)
        DrawMode = TabDrawMode.OwnerDrawFixed
    End Sub

    Protected Overrides Sub CreateHandle()
        MyBase.CreateHandle()
        Alignment = TabAlignment.Left
    End Sub

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

    Protected Overrides Sub OnMouseMove(ByVal e As MouseEventArgs)
        For I As Integer = 0 To TabPages.Count - 1
            If GetTabRect(I).Contains(e.Location) Then
                HoverIndex = I
                Exit For
            End If
        Next
        Invalidate()
        MyBase.OnMouseMove(e)
    End Sub

    Protected Overrides Sub OnMouseLeave(ByVal e As EventArgs)
        HoverIndex = -1
        Invalidate()
        MyBase.OnMouseLeave(e)

    End Sub

    Protected Overrides Sub OnPaint(ByVal e As PaintEventArgs)
        Dim B As New Bitmap(Width, Height)
        Dim G = Graphics.FromImage(B)
        G.TextRenderingHint = TextRenderingHint.ClearTypeGridFit
        G.SmoothingMode = SmoothingMode.HighQuality
        G.PixelOffsetMode = PixelOffsetMode.HighQuality
        G.Clear(BackColor)
        Try : SelectedTab.BackColor = _NormalColour : Catch : End Try
        With G
            .FillRectangle(New SolidBrush(_NormalColour), New Rectangle(-2, 0, ItemSize.Height + 4, Height + 22))
            For i As Integer = 0 To TabCount - 1
                If i = SelectedIndex Then
                    Dim x2 As Rectangle = New Rectangle(New Point(GetTabRect(i).Location.X - 2, GetTabRect(i).Location.Y - 2), New Size(GetTabRect(i).Width + 3, GetTabRect(i).Height - 1))
                    .FillRectangle(New SolidBrush(_NormalColour), x2)
                    Dim tabRect As New Rectangle(GetTabRect(i).Location.X - 3, GetTabRect(i).Location.Y + 2, GetTabRect(i).Size.Width + 10, GetTabRect(i).Size.Height - 11)
                    .FillRectangle(New SolidBrush(_PressedTabColour), New Rectangle(tabRect.X + 1, tabRect.Y + 1, tabRect.Width - 1, tabRect.Height - 2))
                    .DrawRectangle(New Pen(_BorderColour), tabRect)
                    .SmoothingMode = SmoothingMode.AntiAlias
                Else
                    Dim x2 As Rectangle = New Rectangle(New Point(GetTabRect(i).Location.X - 2, GetTabRect(i).Location.Y - 2), New Size(GetTabRect(i).Width - 1, GetTabRect(i).Height - 11))
                    .FillRectangle(New SolidBrush(_NormalColour), x2)
                    If HoverIndex = i Then
                        Dim x21 As Rectangle = New Rectangle(New Point(GetTabRect(i).Location.X - 2, GetTabRect(i).Location.Y + 2), New Size(GetTabRect(i).Width, GetTabRect(i).Height - 11))
                        .FillRectangle(New SolidBrush(Color.FromArgb(199, 201, 207)), x21)
                    End If
                End If
                Dim tabRect1 As New Rectangle(GetTabRect(i).Location.X + 3, GetTabRect(i).Location.Y + 3, GetTabRect(i).Size.Width - 20, GetTabRect(i).Size.Height - 11)
                .DrawString(TabPages(i).Text, Font, New SolidBrush(_TextColour), tabRect1, New StringFormat With {.LineAlignment = StringAlignment.Center, .Alignment = StringAlignment.Center})
                .FillRectangle(New SolidBrush(_NormalColour), New Rectangle(97, 0, Width - 97, Height))
                .DrawLine(New Pen((_BorderColour), 1), New Point(96, 0), New Point(96, Height))
            Next
        End With
        G.Dispose()
        e.Graphics.InterpolationMode = 7
        e.Graphics.DrawImageUnscaled(B, 0, 0)
        B.Dispose()
    End Sub
#End Region

End Class

Public Class FacebookChatRightBubble
    Inherits Control
#Region "Declarations"
    Private _TextColour As Color = Color.FromArgb(65, 73, 80)
    Private _BorderColour As Color = Color.FromArgb(163, 182, 208)
    Private _BaseColour As Color = Color.FromArgb(214, 231, 254)
    Private _ShowArrow As Boolean = True
    Private _ArrowFixed As Boolean = True
#End Region

#Region "Colour & Other Properties"
    <Category("Colours")>
    Public Property BaseColour As Color
        Get
            Return _BaseColour
        End Get
        Set(value As Color)
            _BaseColour = value
        End Set
    End Property
    <Category("Colours")>
    Public Property TextColour As Color
        Get
            Return _TextColour
        End Get
        Set(value As Color)
            _TextColour = value
        End Set
    End Property
    <Category("Colours")>
    Public Property BorderColour As Color
        Get
            Return _BorderColour
        End Get
        Set(value As Color)
            _BorderColour = value
        End Set
    End Property
    <Category("Misc")>
    Public Property ShowArrow As Boolean
        Get
            Return _ShowArrow
        End Get
        Set(value As Boolean)
            _ShowArrow = value
        End Set
    End Property
    <Category("Misc")>
    Public Property ArrowFixed As Boolean
        Get
            Return _ArrowFixed
        End Get
        Set(value As Boolean)
            _ArrowFixed = value
        End Set
    End Property
    '--Need to sort out
#Region ""
    'Private _Multiline As Boolean
    '<Category("Options")>
    'Property Multiline() As Boolean
    '    Get
    '        Return _Multiline
    '    End Get
    '    Set(ByVal value As Boolean)
    '        _Multiline = value
    '        If TB IsNot Nothing Then
    '            TB.Multiline = value

    '            If value Then
    '                TB.Height = Height - 11
    '            Else
    '                Height = TB.Height + 11
    '            End If

    '        End If
    '    End Set
    'End Property
    '<Category("Options")>
    'Overrides Property Text As String
    '    Get
    '        Return MyBase.Text
    '    End Get
    '    Set(ByVal value As String)
    '        MyBase.Text = value
    '        If TB IsNot Nothing Then
    '            TB.Text = value
    '        End If
    '    End Set
    'End Property
    '<Category("Options")>
    'Overrides Property Font As Font
    '    Get
    '        Return MyBase.Font
    '    End Get
    '    Set(ByVal value As Font)
    '        MyBase.Font = value
    '        If TB IsNot Nothing Then
    '            TB.Font = value
    '            TB.Location = New Point(3, 5)
    '            TB.Width = Width - 6

    '            If Not _Multiline Then
    '                Height = TB.Height + 11
    '            End If
    '        End If
    '    End Set
    'End Property
#End Region

#End Region

#Region "Draw Control"
    Sub New()
        SetStyle(ControlStyles.AllPaintingInWmPaint Or ControlStyles.UserPaint Or _
               ControlStyles.ResizeRedraw Or ControlStyles.OptimizedDoubleBuffer Or _
               ControlStyles.SupportsTransparentBackColor, True)
        DoubleBuffered = True
        Size = New Size(135, 32)
        BackColor = Color.Transparent
        Font = New Font("Klavika", 9)
    End Sub

    Protected Overrides Sub OnPaint(e As PaintEventArgs)
        Dim B As New Bitmap(Width, Height)
        Dim G = Graphics.FromImage(B)
        Dim GP, GP1 As New GraphicsPath
        With G
            .TextRenderingHint = TextRenderingHint.ClearTypeGridFit
            .SmoothingMode = SmoothingMode.HighQuality
            .PixelOffsetMode = PixelOffsetMode.HighQuality
            .Clear(BackColor)
            If _ShowArrow Then
                Dim Base As New Rectangle(0, 0, Width - 8, Height - 1)
                Dim BorderBase As New Rectangle(0, 0, Width - 7, Height)
                GP = DrawHelpers.RoundRec(Base, 2)
                GP1 = DrawHelpers.RoundRec(BorderBase, 4)
                .FillPath(New SolidBrush(_BaseColour), GP)
                .DrawPath(New Pen(New SolidBrush(_BorderColour)), GP1)
                .DrawString(Text, Font, New SolidBrush(_TextColour), (New Rectangle(6, 4, Width - 15, Height)))
                If _ArrowFixed Then
                    Dim p() As Point = {New Point(Width - 8, 11), New Point(Width, 17), New Point(Width - 8, 22)}
                    .FillPolygon(New SolidBrush(_BaseColour), p)
                    .DrawPolygon(New Pen(New SolidBrush(_BaseColour)), p)
                    .DrawLine(New Pen(New SolidBrush(_BorderColour)), New Point(Width - 7, 11), New Point(Width, 17))
                    .DrawLine(New Pen(New SolidBrush(_BorderColour)), New Point(Width, 17), New Point(Width - 7, 22))
                Else
                    Dim p() As Point = {New Point(Width - 8, Height - 19), New Point(Width, Height - 25), New Point(Width - 8, Height - 30)}
                    .FillPolygon(New SolidBrush(_BaseColour), p)
                    .DrawPolygon(New Pen(New SolidBrush(_BaseColour)), p)
                    .DrawLine(New Pen(New SolidBrush(_BorderColour)), New Point(Width - 7, Height - 19), New Point(Width, Height - 25))
                    .DrawLine(New Pen(New SolidBrush(_BorderColour)), New Point(Width, Height - 25), New Point(Width - 7, Height - 30))
                End If
            Else
                Dim Base As New Rectangle(0, 0, Width - 1, Height - 1)
                Dim BorderBase As New Rectangle(0, 0, Width, Height)
                GP = DrawHelpers.RoundRec(Base, 2)
                GP1 = DrawHelpers.RoundRec(BorderBase, 4)
                .FillPath(New SolidBrush(_BaseColour), GP)
                .DrawPath(New Pen(New SolidBrush(_BorderColour)), GP1)
                .DrawString(Text, Font, New SolidBrush(_TextColour), (New Rectangle(6, 4, Width - 10, Height)))
            End If
        End With
        MyBase.OnPaint(e)
        G.Dispose()
        e.Graphics.InterpolationMode = 7
        e.Graphics.DrawImageUnscaled(B, 0, 0)
        B.Dispose()
    End Sub
#End Region

End Class

Public Class FacebookChatLeftBubble
    Inherits Control

#Region "Declarations"
    Private _TextColour As Color = Color.FromArgb(65, 73, 80)
    Private _BorderColour As Color = Color.FromArgb(198, 198, 198)
    Private _BaseColour As Color = Color.FromArgb(250, 250, 250)
    Private _ShowArrow As Boolean = True
    Private _ArrowFixed As Boolean = True
#End Region

#Region "Colour & Other Properties"
    <Category("Colours")>
    Public Property BaseColour As Color
        Get
            Return _BaseColour
        End Get
        Set(value As Color)
            _BaseColour = value
        End Set
    End Property
    <Category("Colours")>
    Public Property TextColour As Color
        Get
            Return _TextColour
        End Get
        Set(value As Color)
            _TextColour = value
        End Set
    End Property
    <Category("Colours")>
    Public Property BorderColour As Color
        Get
            Return _BorderColour
        End Get
        Set(value As Color)
            _BorderColour = value
        End Set
    End Property
    <Category("Misc")>
    Public Property ShowArrow As Boolean
        Get
            Return _ShowArrow
        End Get
        Set(value As Boolean)
            _ShowArrow = value
        End Set
    End Property
    <Category("Misc")>
    Public Property ArrowFixed As Boolean
        Get
            Return _ArrowFixed
        End Get
        Set(value As Boolean)
            _ArrowFixed = value
        End Set
    End Property
    '--Need to sort out
#Region ""
    'Private _Multiline As Boolean
    '<Category("Options")>
    'Property Multiline() As Boolean
    '    Get
    '        Return _Multiline
    '    End Get
    '    Set(ByVal value As Boolean)
    '        _Multiline = value
    '        If TB IsNot Nothing Then
    '            TB.Multiline = value

    '            If value Then
    '                TB.Height = Height - 11
    '            Else
    '                Height = TB.Height + 11
    '            End If

    '        End If
    '    End Set
    'End Property
    '<Category("Options")>
    'Overrides Property Text As String
    '    Get
    '        Return MyBase.Text
    '    End Get
    '    Set(ByVal value As String)
    '        MyBase.Text = value
    '        If TB IsNot Nothing Then
    '            TB.Text = value
    '        End If
    '    End Set
    'End Property
    '<Category("Options")>
    'Overrides Property Font As Font
    '    Get
    '        Return MyBase.Font
    '    End Get
    '    Set(ByVal value As Font)
    '        MyBase.Font = value
    '        If TB IsNot Nothing Then
    '            TB.Font = value
    '            TB.Location = New Point(3, 5)
    '            TB.Width = Width - 6

    '            If Not _Multiline Then
    '                Height = TB.Height + 11
    '            End If
    '        End If
    '    End Set
    'End Property
#End Region

#End Region

#Region "Draw Control"
    Sub New()
        SetStyle(ControlStyles.AllPaintingInWmPaint Or ControlStyles.UserPaint Or _
               ControlStyles.ResizeRedraw Or ControlStyles.OptimizedDoubleBuffer Or _
               ControlStyles.SupportsTransparentBackColor, True)
        DoubleBuffered = True
        Size = New Size(135, 32)
        BackColor = Color.Transparent
        Font = New Font("Klavika", 9)
    End Sub

    Protected Overrides Sub OnPaint(e As PaintEventArgs)
        Dim B As New Bitmap(Width, Height)
        Dim G = Graphics.FromImage(B)
        Dim GP, GP1 As New GraphicsPath
        With G
            .TextRenderingHint = TextRenderingHint.ClearTypeGridFit
            .SmoothingMode = SmoothingMode.HighQuality
            .PixelOffsetMode = PixelOffsetMode.HighQuality
            .Clear(BackColor)
            If _ShowArrow Then
                Dim Base As New Rectangle(7, 0, Width - 7, Height - 1)
                Dim BorderBase As New Rectangle(8, 0, Width - 8, Height)
                GP = DrawHelpers.RoundRec(Base, 2)
                GP1 = DrawHelpers.RoundRec(BorderBase, 4)
                .FillPath(New SolidBrush(_BaseColour), GP)
                .DrawPath(New Pen(New SolidBrush(_BorderColour)), GP1)
                .DrawString(Text, Font, New SolidBrush(_TextColour), New Rectangle(15, 4, Width - 17, Height - 5))
                If _ArrowFixed Then
                    Dim p() As Point = {New Point(9, 11), New Point(0, 17), New Point(9, 22)}
                    .FillPolygon(New SolidBrush(_BaseColour), p)
                    .DrawPolygon(New Pen(New SolidBrush(_BaseColour)), p)
                    .DrawLine(New Pen(New SolidBrush(_BorderColour)), New Point(8, 11), New Point(0, 17))
                    .DrawLine(New Pen(New SolidBrush(_BorderColour)), New Point(0, 17), New Point(8, 22))
                Else
                    Dim p() As Point = {New Point(9, Height - 19), New Point(0, Height - 25), New Point(9, Height - 30)}
                    .FillPolygon(New SolidBrush(_BaseColour), p)
                    .DrawPolygon(New Pen(New SolidBrush(_BaseColour)), p)
                    .DrawLine(New Pen(New SolidBrush(_BorderColour)), New Point(8, Height - 19), New Point(0, Height - 25))
                    .DrawLine(New Pen(New SolidBrush(_BorderColour)), New Point(0, Height - 25), New Point(8, Height - 30))
                End If
            Else
                Dim Base As New Rectangle(0, 0, Width - 1, Height - 1)
                Dim BorderBase As New Rectangle(0, 0, Width, Height)
                GP = DrawHelpers.RoundRec(Base, 2)
                GP1 = DrawHelpers.RoundRec(BorderBase, 4)
                .FillPath(New SolidBrush(_BaseColour), GP)
                .DrawPath(New Pen(New SolidBrush(_BorderColour)), GP1)
                .DrawString(Text, Font, New SolidBrush(_TextColour), New Rectangle(6, 4, Width - 17, Height - 5))
            End If
        End With
        MyBase.OnPaint(e)
        G.Dispose()
        e.Graphics.InterpolationMode = 7
        e.Graphics.DrawImageUnscaled(B, 0, 0)
        B.Dispose()
    End Sub
#End Region

End Class

<DefaultEvent("CheckedChanged")>
Public Class FacebookRadioButton
    Inherits Control

#Region "Declarations"
    Private _Checked As Boolean
    Private State As MouseState = MouseState.None
    Private _HighColour As Color = Color.FromArgb(125, 200, 255)
    Private _SecondBorderColour As Color = Color.FromArgb(114, 207, 249)
    Private _CheckedColour As Color = Color.FromArgb(103, 215, 243)
    Private _BorderColour As Color = Color.FromArgb(207, 211, 220)
    Private _BackColour As Color = Color.FromArgb(237, 239, 244)
    Private _TextColour As Color = Color.FromArgb(65, 73, 80)
#End Region

#Region "Colour & Other Properties"

    <Category("Colours")>
    Public Property HighlightColour As Color
        Get
            Return _HighColour
        End Get
        Set(value As Color)
            _HighColour = value
        End Set
    End Property

    <Category("Colours")>
    Public Property BaseColour As Color
        Get
            Return _BackColour
        End Get
        Set(value As Color)
            _BackColour = value
        End Set
    End Property

    <Category("Colours")>
    Public Property BorderColour As Color
        Get
            Return _BorderColour
        End Get
        Set(value As Color)
            _BorderColour = value
        End Set
    End Property

    <Category("Colours")>
    Public Property CheckedColour As Color
        Get
            Return _CheckedColour
        End Get
        Set(value As Color)
            _CheckedColour = value
        End Set
    End Property

    <Category("Colours")>
    Public Property SecondCircleColour As Color
        Get
            Return _SecondBorderColour
        End Get
        Set(value As Color)
            _SecondBorderColour = value
        End Set
    End Property

    <Category("Colours")>
    Public Property FontColour As Color
        Get
            Return _TextColour
        End Get
        Set(value As Color)
            _TextColour = value
        End Set
    End Property

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

    Protected Overrides Sub OnClick(e As EventArgs)
        If Not _Checked Then Checked = True
        MyBase.OnClick(e)
    End Sub
    Private Sub InvalidateControls()
        If Not IsHandleCreated OrElse Not _Checked Then Return
        For Each C As Control In Parent.Controls
            If C IsNot Me AndAlso TypeOf C Is FacebookRadioButton Then
                DirectCast(C, FacebookRadioButton).Checked = False
                Invalidate()
            End If
        Next
    End Sub
    Protected Overrides Sub OnCreateControl()
        MyBase.OnCreateControl()
        InvalidateControls()
    End Sub
    Protected Overrides Sub OnResize(e As EventArgs)
        MyBase.OnResize(e)
        Height = 22
    End Sub
#End Region

#Region "Mouse States"

    Protected Overrides Sub OnMouseDown(e As MouseEventArgs)
        MyBase.OnMouseDown(e)
        State = MouseState.Down : Invalidate()
    End Sub
    Protected Overrides Sub OnMouseUp(e As MouseEventArgs)
        MyBase.OnMouseUp(e)
        State = MouseState.Over : Invalidate()
    End Sub
    Protected Overrides Sub OnMouseEnter(e As EventArgs)
        MyBase.OnMouseEnter(e)
        State = MouseState.Over : Invalidate()
    End Sub
    Protected Overrides Sub OnMouseLeave(e As EventArgs)
        MyBase.OnMouseLeave(e)
        State = MouseState.None : Invalidate()
    End Sub

#End Region

#Region "Draw Control"
    Sub New()
        SetStyle(ControlStyles.AllPaintingInWmPaint Or ControlStyles.UserPaint Or _
                   ControlStyles.ResizeRedraw Or ControlStyles.OptimizedDoubleBuffer, True)
        DoubleBuffered = True
        Cursor = Cursors.Hand
        Size = New Size(100, 22)
    End Sub

    Protected Overrides Sub OnPaint(e As PaintEventArgs)
        Dim B As New Bitmap(Width, Height)
        Dim G = Graphics.FromImage(B)
        Dim Base As New Rectangle(1, 0, Height - 2, Height - 2)
        Dim Circle As New Rectangle(7, 6, Height - 14, Height - 14)
        Dim SecondBorder As New Rectangle(4, 3, 14, 14)
        With G
            .TextRenderingHint = TextRenderingHint.ClearTypeGridFit
            .SmoothingMode = SmoothingMode.HighQuality
            .PixelOffsetMode = PixelOffsetMode.HighQuality
            .Clear(BackColor)
            .FillEllipse(New SolidBrush(_BackColour), Base)
            .DrawEllipse(New Pen(_BorderColour), Base)
            Select Case State
                Case MouseState.Over
                    .DrawEllipse(New Pen(_HighColour), Base)
                Case MouseState.Down
                    .DrawEllipse(New Pen(_HighColour), Base)
            End Select
            If Checked Then
                .FillEllipse(New SolidBrush(_CheckedColour), Circle)
                .DrawEllipse(New Pen(_HighColour), Base)
                .DrawEllipse(New Pen(_SecondBorderColour), SecondBorder)
            End If
            .DrawString(Text, Font, New SolidBrush(_TextColour), New Rectangle(24, 4, Width, Height), New StringFormat With {.Alignment = StringAlignment.Near, .LineAlignment = StringAlignment.Near})
        End With
        MyBase.OnPaint(e)
        G.Dispose()
        e.Graphics.InterpolationMode = 7
        e.Graphics.DrawImageUnscaled(B, 0, 0)
        B.Dispose()
    End Sub
#End Region

End Class

<DefaultEvent("CheckedChanged")>
Public Class FacebookCheckBox
    Inherits Control

#Region "Declarations"
    Private _Checked As Boolean
    Private State As MouseState = MouseState.None
    Private _HighColour As Color = Color.FromArgb(125, 200, 255)
    Private _CheckedColour As Color = Color.FromArgb(103, 215, 243)
    Private _BorderColour As Color = Color.FromArgb(207, 211, 220)
    Private _BackColour As Color = Color.FromArgb(237, 239, 244)
    Private _TextColour As Color = Color.FromArgb(65, 73, 80)
#End Region

#Region "Colour & Other Properties"

    <Category("Colours")>
    Public Property HighlightColour As Color
        Get
            Return _HighColour
        End Get
        Set(value As Color)
            _HighColour = value
        End Set
    End Property

    <Category("Colours")>
    Public Property BaseColour As Color
        Get
            Return _BackColour
        End Get
        Set(value As Color)
            _BackColour = value
        End Set
    End Property

    <Category("Colours")>
    Public Property BorderColour As Color
        Get
            Return _BorderColour
        End Get
        Set(value As Color)
            _BorderColour = value
        End Set
    End Property

    <Category("Colours")>
    Public Property CheckedColour As Color
        Get
            Return _CheckedColour
        End Get
        Set(value As Color)
            _CheckedColour = value
        End Set
    End Property

    <Category("Colours")>
    Public Property FontColour As Color
        Get
            Return _TextColour
        End Get
        Set(value As Color)
            _TextColour = value
        End Set
    End Property

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

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

    Event CheckedChanged(ByVal sender As Object)
    Protected Overrides Sub OnClick(ByVal e As System.EventArgs)
        _Checked = Not _Checked
        RaiseEvent CheckedChanged(Me)
        MyBase.OnClick(e)
    End Sub

    Protected Overrides Sub OnResize(e As EventArgs)
        MyBase.OnResize(e)
        Height = 22
    End Sub
#End Region

#Region "Mouse States"

    Protected Overrides Sub OnMouseDown(e As MouseEventArgs)
        MyBase.OnMouseDown(e)
        State = MouseState.Down : Invalidate()
    End Sub
    Protected Overrides Sub OnMouseUp(e As MouseEventArgs)
        MyBase.OnMouseUp(e)
        State = MouseState.Over : Invalidate()
    End Sub
    Protected Overrides Sub OnMouseEnter(e As EventArgs)
        MyBase.OnMouseEnter(e)
        State = MouseState.Over : Invalidate()
    End Sub
    Protected Overrides Sub OnMouseLeave(e As EventArgs)
        MyBase.OnMouseLeave(e)
        State = MouseState.None : Invalidate()
    End Sub

#End Region

#Region "Draw Control"
    Sub New()
        SetStyle(ControlStyles.AllPaintingInWmPaint Or ControlStyles.UserPaint Or _
                   ControlStyles.ResizeRedraw Or ControlStyles.OptimizedDoubleBuffer, True)
        DoubleBuffered = True
        Cursor = Cursors.Hand
        Size = New Size(100, 22)
    End Sub

    Protected Overrides Sub OnPaint(e As PaintEventArgs)
        Dim B As New Bitmap(Width, Height)
        Dim G = Graphics.FromImage(B)
        Dim Base As New Rectangle(0, 0, 22, 22)
        With G
            .TextRenderingHint = TextRenderingHint.ClearTypeGridFit
            .SmoothingMode = SmoothingMode.HighQuality
            .PixelOffsetMode = PixelOffsetMode.HighQuality
            .Clear(BackColor)
            .FillRectangle(New SolidBrush(_BackColour), Base)
            .DrawRectangle(New Pen(_BorderColour), New Rectangle(1, 1, 20, 20))
            Select Case State
                Case MouseState.Over
                    .DrawRectangle(New Pen(_HighColour), New Rectangle(1, 1, 20, 20))
                Case MouseState.Down
                    .DrawRectangle(New Pen(_HighColour), New Rectangle(1, 1, 20, 20))
            End Select
            If Checked Then
                .FillRectangle(New SolidBrush(_CheckedColour), New Rectangle(3, 3, 16, 16))
                .DrawRectangle(New Pen(_HighColour), New Rectangle(1, 1, 20, 20))
            End If
            .DrawString(Text, Font, New SolidBrush(_TextColour), New Rectangle(24, 4, Width, Height), New StringFormat With {.Alignment = StringAlignment.Near, .LineAlignment = StringAlignment.Near})
        End With
        MyBase.OnPaint(e)
        G.Dispose()
        e.Graphics.InterpolationMode = 7
        e.Graphics.DrawImageUnscaled(B, 0, 0)
        B.Dispose()
    End Sub
#End Region

End Class

Public Class FacebookProgressBar
    Inherits Control

#Region "Declarations"
    Private _ProgressColour As Color = Color.LightBlue
    Private _GlowColour As Color = Color.FromArgb(73, 185, 213)
    Private _BorderColour As Color = Color.FromArgb(187, 191, 200)
    Private _BaseColour As Color = Color.FromArgb(237, 237, 237)
    Private _FontColour As Color = Color.FromArgb(50, 50, 50)
    Private _Value As Integer = 0
    Private _Maximum As Integer = 100
#End Region

#Region "Properties"

    <Category("Control")>
    Public Property Maximum() As Integer
        Get
            Return _Maximum
        End Get
        Set(V As Integer)
            Select Case V
                Case Is < _Value
                    _Value = V
            End Select
            _Maximum = V
            Invalidate()
        End Set
    End Property

    <Category("Control")>
    Public Property Value() As Integer
        Get
            Select Case _Value
                Case 0
                    Return 0
                    Invalidate()
                Case Else
                    Return _Value
                    Invalidate()
            End Select
        End Get
        Set(V As Integer)
            Select Case V
                Case Is > _Maximum
                    V = _Maximum
                    Invalidate()
            End Select
            _Value = V
            Invalidate()
        End Set
    End Property

    <Category("Colours")>
    Public Property ProgressColour As Color
        Get
            Return _ProgressColour
        End Get
        Set(value As Color)
            _ProgressColour = value
        End Set
    End Property

    <Category("Colours")>
    Public Property BaseColour As Color
        Get
            Return _BaseColour
        End Get
        Set(value As Color)
            _BaseColour = value
        End Set
    End Property

    <Category("Colours")>
    Public Property BorderColour As Color
        Get
            Return _BorderColour
        End Get
        Set(value As Color)
            _BorderColour = value
        End Set
    End Property

    <Category("Colours")>
    Public Property GlowColour As Color
        Get
            Return _GlowColour
        End Get
        Set(value As Color)
            _GlowColour = value
        End Set
    End Property

    <Category("Colours")>
    Public Property FontColour As Color
        Get
            Return _FontColour
        End Get
        Set(value As Color)
            _FontColour = value
        End Set
    End Property

#End Region

#Region "Events"

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

    Protected Overrides Sub CreateHandle()
        MyBase.CreateHandle()
        Height = 25
    End Sub

    Public Sub Increment(ByVal Amount As Integer)
        Value += Amount
    End Sub

#End Region

#Region "Draw Control"
    Sub New()
        SetStyle(ControlStyles.AllPaintingInWmPaint Or ControlStyles.UserPaint Or _
                 ControlStyles.ResizeRedraw Or ControlStyles.OptimizedDoubleBuffer, True)
        DoubleBuffered = True
        BackColor = Color.FromArgb(60, 70, 73)
    End Sub

    Protected Overrides Sub OnPaint(e As PaintEventArgs)
        Dim B = New Bitmap(Width, Height)
        Dim G As Graphics = Graphics.FromImage(B)
        Dim Base As New Rectangle(0, 0, Width, Height)
        With G
            .TextRenderingHint = TextRenderingHint.ClearTypeGridFit
            .SmoothingMode = SmoothingMode.HighQuality
            .PixelOffsetMode = PixelOffsetMode.HighQuality
            .Clear(BackColor)
            Dim ProgVal As Integer = CInt(_Value / _Maximum * (Width - 40))
            Select Case Value
                Case 0
                    .FillRectangle(New SolidBrush(_BaseColour), Base)
                    .DrawLine(New Pen(_BorderColour), New Point(Width - 40, 0), New Point(Width - 40, Height))
                    .FillRectangle(New SolidBrush(_ProgressColour), New Rectangle(0, 0, ProgVal - 1, Height))
                    .DrawRectangle(New Pen(_BorderColour), Base)
                    .DrawString(String.Format("{0}%", _Value), Font, New SolidBrush(_FontColour), New Point(Width - 37, 4))
                Case _Maximum
                    .FillRectangle(New SolidBrush(_BaseColour), Base)
                    .FillRectangle(New SolidBrush(_ProgressColour), New Rectangle(0, 0, ProgVal - 1, Height))
                    .DrawRectangle(New Pen(_GlowColour), Base)
                    .DrawLine(New Pen(_GlowColour), New Point(Width - 40, 0), New Point(Width - 40, Height))
                    .DrawString(String.Format("{0}%", _Value), Font, New SolidBrush(_FontColour), New Point(Width - 37, 4))
                Case Else
                    .FillRectangle(New SolidBrush(_BaseColour), Base)
                    .FillRectangle(New SolidBrush(_ProgressColour), New Rectangle(0, 0, ProgVal - 1, Height))
                    .DrawRectangle(New Pen(_BorderColour), Base)
                    .DrawLine(New Pen(_BorderColour), New Point(Width - 40, 0), New Point(Width - 40, Height))
                    .DrawString(String.Format("{0}%", _Value), Font, New SolidBrush(_FontColour), New Point(Width - 37, 4))
            End Select
        End With
        MyBase.OnPaint(e)
        G.Dispose()
        e.Graphics.InterpolationMode = 7
        e.Graphics.DrawImageUnscaled(B, 0, 0)
        B.Dispose()
    End Sub

#End Region

End Class

Public Class FacebookComboBox
    Inherits ComboBox

#Region "Declarations"
    Private _StartIndex As Integer = 0
    Private _BorderColour As Color = Color.FromArgb(73, 185, 213)
    Private _BaseColour As Color = Color.White
    Private _FontColour As Color = Color.FromArgb(50, 50, 50)
#End Region

#Region "Properties & Events"

    <Category("Colours")>
    Public Property BorderColour As Color
        Get
            Return _BorderColour
        End Get
        Set(value As Color)
            _BorderColour = value
        End Set
    End Property

    <Category("Colours")>
    Public Property BaseColour As Color
        Get
            Return _BaseColour
        End Get
        Set(value As Color)
            _BaseColour = value
        End Set
    End Property

    <Category("Colours")>
    Public Property FontColour As Color
        Get
            Return _FontColour
        End Get
        Set(value As Color)
            _FontColour = value
        End Set
    End Property

    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

    Sub ReplaceItem(ByVal sender As System.Object, ByVal e As System.Windows.Forms.DrawItemEventArgs) Handles Me.DrawItem
        e.DrawBackground()
        e.Graphics.TextRenderingHint = TextRenderingHint.ClearTypeGridFit
        Dim Rect As New Rectangle(e.Bounds.X, e.Bounds.Y, e.Bounds.Width + 1, e.Bounds.Height + 1)
        Try
            With e.Graphics
                If (e.State And DrawItemState.Selected) = DrawItemState.Selected Then
                    .FillRectangle(Brushes.LightSteelBlue, Rect)
                    .DrawString(MyBase.GetItemText(MyBase.Items(e.Index)), Font, New SolidBrush(_FontColour), 1, e.Bounds.Top + 2)
                Else
                    .FillRectangle(New SolidBrush(Color.White), Rect)
                    .DrawString(MyBase.GetItemText(MyBase.Items(e.Index)), Font, New SolidBrush(_FontColour), 1, e.Bounds.Top + 2)
                End If
            End With
        Catch
        End Try
        e.DrawFocusRectangle()
        Me.Invalidate()

    End Sub

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

    Protected Overrides Sub OnMouseDown(ByVal e As MouseEventArgs)
        MyBase.Invalidate()
        MyBase.OnMouseClick(e)
    End Sub

    Protected Overrides Sub OnMouseUp(e As System.Windows.Forms.MouseEventArgs)
        MyBase.Invalidate()
        MyBase.OnMouseUp(e)
    End Sub

#End Region

#Region "Draw Control"

    Sub New()
        SetStyle(ControlStyles.AllPaintingInWmPaint Or ControlStyles.UserPaint Or _
               ControlStyles.ResizeRedraw Or ControlStyles.OptimizedDoubleBuffer Or _
               ControlStyles.SupportsTransparentBackColor, True)
        DoubleBuffered = True
        BackColor = Color.Transparent
        DrawMode = Windows.Forms.DrawMode.OwnerDrawFixed
        DropDownStyle = ComboBoxStyle.DropDownList
        Me.Width = 163
        Font = New Font("Segoe UI", 10)
    End Sub

    Protected Overrides Sub OnPaint(ByVal e As PaintEventArgs)
        Dim B As New Bitmap(Width, Height)
        Dim G = Graphics.FromImage(B)
        With G
            .TextRenderingHint = TextRenderingHint.ClearTypeGridFit
            .SmoothingMode = SmoothingMode.HighQuality
            .PixelOffsetMode = PixelOffsetMode.HighQuality
            .Clear(BackColor)
            Try
                Dim Square As New Rectangle(Width - 22, 0, Width, Height)
                .FillRectangle(New SolidBrush(Color.FromArgb(237, 237, 237)), Square)
                .FillRectangle(New SolidBrush(_BaseColour), New Rectangle(0, 0, Width - 22, Height))
                .DrawLine(New Pen(_BorderColour), New Point(Width - 23, 0), New Point(Width - 23, Height))
                Try
                    .DrawString(Text, Font, New SolidBrush(_FontColour), New Rectangle(3, 0, Width - 20, Height), New StringFormat With {.LineAlignment = StringAlignment.Center, .Alignment = StringAlignment.Near})
                Catch : End Try
                .DrawLine(New Pen(_BorderColour), 0, 0, 0, 0)
                .DrawRectangle(New Pen(_BorderColour), New Rectangle(0, 0, Width, Height))
                Dim P() As Point = {New Point(Width - 18, 9), New Point(Width - 12, 18), New Point(Width - 6, 9)}
                .FillPolygon(New SolidBrush(_BorderColour), P)
                .DrawPolygon(New Pen(Color.Gainsboro), P)
            Catch
            End Try
        End With
        MyBase.OnPaint(e)
        G.Dispose()
        e.Graphics.InterpolationMode = 7
        e.Graphics.DrawImageUnscaled(B, 0, 0)
        B.Dispose()
    End Sub

#End Region


End Class

Public Class Facebook2ndProgressBar
    Inherits Control

#Region "Declarations"
    Private _ProgressColour As Color = Color.FromArgb(109, 131, 179)
    Private _GlowColour As Color = Color.FromArgb(73, 185, 213)
    Private _BorderColour As Color = Color.FromArgb(64, 89, 134)
    Private _BaseColour As Color = Color.FromArgb(237, 237, 237)
    Private _Value As Integer = 0
    Private _Maximum As Integer = 100
#End Region

#Region "Properties"

    <Category("Control")>
            Public Property Maximum() As Integer
        Get
            Return _Maximum
        End Get
        Set(V As Integer)
            Select Case V
                Case Is < _Value
                    _Value = V
            End Select
            _Maximum = V
            Invalidate()
        End Set
    End Property

    <Category("Control")>
    Public Property Value() As Integer
        Get
            Select Case _Value
                Case 0
                    Return 0
                    Invalidate()
                Case Else
                    Return _Value
                    Invalidate()
            End Select
        End Get
        Set(V As Integer)
            Select Case V
                Case Is > _Maximum
                    V = _Maximum
                    Invalidate()
            End Select
            _Value = V
            Invalidate()
        End Set
    End Property

    <Category("Colours")>
    Public Property ProgressColour As Color
        Get
            Return _ProgressColour
        End Get
        Set(value As Color)
            _ProgressColour = value
        End Set
    End Property

    <Category("Colours")>
    Public Property BaseColour As Color
        Get
            Return _BaseColour
        End Get
        Set(value As Color)
            _BaseColour = value
        End Set
    End Property

    <Category("Colours")>
    Public Property BorderColour As Color
        Get
            Return _BorderColour
        End Get
        Set(value As Color)
            _BorderColour = value
        End Set
    End Property

    <Category("Colours")>
    Public Property GlowColour As Color
        Get
            Return _GlowColour
        End Get
        Set(value As Color)
            _GlowColour = value
        End Set
    End Property
#End Region

#Region "Events"

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

    Protected Overrides Sub CreateHandle()
        MyBase.CreateHandle()
        Height = 10
    End Sub

    Public Sub Increment(ByVal Amount As Integer)
        Value += Amount
    End Sub

#End Region

#Region "Draw Control"
    Sub New()
        SetStyle(ControlStyles.AllPaintingInWmPaint Or ControlStyles.UserPaint Or _
                 ControlStyles.ResizeRedraw Or ControlStyles.OptimizedDoubleBuffer, True)
        DoubleBuffered = True
        BackColor = Color.FromArgb(60, 70, 73)
    End Sub

    Protected Overrides Sub OnPaint(e As PaintEventArgs)
        Dim B = New Bitmap(Width, Height)
        Dim G As Graphics = Graphics.FromImage(B)
        Dim Base As New Rectangle(0, 0, Width, Height)
        With G
            .SmoothingMode = SmoothingMode.HighQuality
            .PixelOffsetMode = PixelOffsetMode.HighQuality
            .Clear(BackColor)
            Dim ProgVal As Integer = CInt(_Value / _Maximum * Width)
            Select Case Value
                Case 0
                    .FillRectangle(New SolidBrush(_BaseColour), Base)
                     .FillRectangle(New SolidBrush(_ProgressColour), New Rectangle(0, 0, ProgVal - 1, Height))
                    .DrawRectangle(New Pen(_BorderColour, 2), Base)
                      Case _Maximum
                    .FillRectangle(New SolidBrush(_BaseColour), Base)
                    .FillRectangle(New SolidBrush(_ProgressColour), New Rectangle(0, 0, ProgVal - 1, Height))
                    .DrawRectangle(New Pen(_BorderColour, 2), Base)
                   Case Else
                    .FillRectangle(New SolidBrush(_BaseColour), Base)
                    .FillRectangle(New SolidBrush(_ProgressColour), New Rectangle(0, 0, ProgVal - 1, Height))
                    .DrawRectangle(New Pen(_BorderColour, 2), Base)
                     End Select
        End With
        MyBase.OnPaint(e)
        G.Dispose()
        e.Graphics.InterpolationMode = 7
        e.Graphics.DrawImageUnscaled(B, 0, 0)
        B.Dispose()
    End Sub
#End Region

End Class

Public Class FacebookSeperator
    Inherits Control

#Region "Declarations"
    Private _SeperatorColour As Color = Color.FromArgb(14, 44, 109)
    Private _Alignment As Style = Style.Horizontal
#End Region

#Region "Properties"

    Enum Style
        Horizontal
        Verticle
    End Enum
    <Category("Control")>
    Public Property Alignment As Style
        Get
            Return _Alignment
        End Get
        Set(value As Style)
            _Alignment = value
        End Set
    End Property

    <Category("Colours")>
    Public Property SeperatorColour As Color
        Get
            Return _SeperatorColour
        End Get
        Set(value As Color)
            _SeperatorColour = value
        End Set
    End Property

#End Region

#Region "Draw Control"
    Sub New()
        SetStyle(ControlStyles.AllPaintingInWmPaint Or ControlStyles.UserPaint Or _
                 ControlStyles.ResizeRedraw Or ControlStyles.OptimizedDoubleBuffer Or _
                 ControlStyles.SupportsTransparentBackColor, True)
        DoubleBuffered = True
        BackColor = Color.Transparent
        Size = New Size(30, 30)
    End Sub

    Protected Overrides Sub OnPaint(e As PaintEventArgs)
        Dim B As New Bitmap(Width, Height)
        Dim G = Graphics.FromImage(B)
        Dim Base As New Rectangle(0, 0, Width - 1, Height - 1)
        With G
            .SmoothingMode = SmoothingMode.HighQuality
            .PixelOffsetMode = PixelOffsetMode.HighQuality
            Select Case _Alignment
                Case Style.Horizontal
                    .DrawLine(New Pen(_SeperatorColour, 0.5), New Point(0, Height / 2), New Point(Width, Height / 2))
                Case Style.Verticle
                    .DrawLine(New Pen(_SeperatorColour, 0.5), New Point(Width / 2, 0), New Point(Width / 2, Height))
            End Select
        End With
        MyBase.OnPaint(e)
        G.Dispose()
        e.Graphics.InterpolationMode = 7
        e.Graphics.DrawImageUnscaled(B, 0, 0)
        B.Dispose()
    End Sub
#End Region



End Class
 
Durum
Üzgünüz bu konu cevaplar için kapatılmıştır...
Üst