Imports System.Drawing.Drawing2D
Imports System.ComponentModel
'PLEASE LEAVE CREDITS IN SOURCE, DO NOT REDISTRIBUTE!
'--------------------- [ Theme ] --------------------
'Creator: Mephobia
'Contact: Mephobia.HF (Skype)
'Created: 12.15.2012
'Changed: 12.15.2012
'-------------------- [ /Theme ] ---------------------
'PLEASE LEAVE CREDITS IN SOURCE, DO NOT REDISTRIBUTE!
Enum MouseState As Byte
None = 0
Over = 1
Down = 2
Block = 3
End Enum
Module Draw
Public Function RoundRect(ByVal Rectangle As Rectangle, ByVal Curve As Integer) As GraphicsPath
Dim P As GraphicsPath = New GraphicsPath()
Dim ArcRectangleWidth As Integer = Curve * 2
P.AddArc(New Rectangle(Rectangle.X, Rectangle.Y, ArcRectangleWidth, ArcRectangleWidth), -180, 90)
P.AddArc(New Rectangle(Rectangle.Width - ArcRectangleWidth + Rectangle.X, Rectangle.Y, ArcRectangleWidth, ArcRectangleWidth), -90, 90)
P.AddArc(New Rectangle(Rectangle.Width - ArcRectangleWidth + Rectangle.X, Rectangle.Height - ArcRectangleWidth + Rectangle.Y, ArcRectangleWidth, ArcRectangleWidth), 0, 90)
P.AddArc(New Rectangle(Rectangle.X, Rectangle.Height - ArcRectangleWidth + Rectangle.Y, ArcRectangleWidth, ArcRectangleWidth), 90, 90)
P.AddLine(New Point(Rectangle.X, Rectangle.Height - ArcRectangleWidth + Rectangle.Y), New Point(Rectangle.X, Curve + Rectangle.Y))
Return P
End Function
Public Function RoundRect(ByVal X As Integer, ByVal Y As Integer, ByVal Width As Integer, ByVal Height As Integer, ByVal Curve As Integer) As GraphicsPath
Dim Rectangle As Rectangle = New Rectangle(X, Y, Width, Height)
Dim P As GraphicsPath = New GraphicsPath()
Dim ArcRectangleWidth As Integer = Curve * 2
P.AddArc(New Rectangle(Rectangle.X, Rectangle.Y, ArcRectangleWidth, ArcRectangleWidth), -180, 90)
P.AddArc(New Rectangle(Rectangle.Width - ArcRectangleWidth + Rectangle.X, Rectangle.Y, ArcRectangleWidth, ArcRectangleWidth), -90, 90)
P.AddArc(New Rectangle(Rectangle.Width - ArcRectangleWidth + Rectangle.X, Rectangle.Height - ArcRectangleWidth + Rectangle.Y, ArcRectangleWidth, ArcRectangleWidth), 0, 90)
P.AddArc(New Rectangle(Rectangle.X, Rectangle.Height - ArcRectangleWidth + Rectangle.Y, ArcRectangleWidth, ArcRectangleWidth), 90, 90)
P.AddLine(New Point(Rectangle.X, Rectangle.Height - ArcRectangleWidth + Rectangle.Y), New Point(Rectangle.X, Curve + Rectangle.Y))
Return P
End Function
End Module
Public Class ImageToCodeClass
Public Function ImageToCode(ByVal Img As Bitmap) As String
Return Convert.ToBase64String(DirectCast(System.ComponentModel.TypeDescriptor.GetConverter(Img).ConvertTo(Img, GetType(Byte())), Byte()))
End Function
Public Function CodeToImage(ByVal Code As String) As Image
Return Image.FromStream(New System.IO.MemoryStream(Convert.FromBase64String(Code)))
End Function
End Class
Public Class EffectualButtonBlue : Inherits Control
#Region " MouseStates "
Dim State As MouseState = MouseState.None
Protected Overrides Sub OnMouseDown(e As System.Windows.Forms.MouseEventArgs)
MyBase.OnMouseDown(e)
State = MouseState.Down : Invalidate()
End Sub
Protected Overrides Sub OnMouseUp(e As System.Windows.Forms.MouseEventArgs)
MyBase.OnMouseUp(e)
State = MouseState.Over : Invalidate()
End Sub
Protected Overrides Sub OnMouseEnter(e As System.EventArgs)
MyBase.OnMouseEnter(e)
State = MouseState.Over : Invalidate()
End Sub
Protected Overrides Sub OnMouseLeave(e As System.EventArgs)
MyBase.OnMouseLeave(e)
State = MouseState.None : Invalidate()
End Sub
#End Region
Sub New()
SetStyle(ControlStyles.UserPaint Or ControlStyles.SupportsTransparentBackColor, True)
BackColor = Color.Transparent
ForeColor = Color.FromArgb(205, 205, 205)
DoubleBuffered = True
End Sub
Protected Overrides Sub OnPaint(e As System.Windows.Forms.PaintEventArgs)
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 InnerRect As New Rectangle(1, 1, Width - 3, Height - 3)
MyBase.OnPaint(e)
G.Clear(BackColor)
Dim drawFont As New Font("Tahoma", 8, FontStyle.Bold)
'G.CompositingQuality = CompositingQuality.HighQuality
G.SmoothingMode = SmoothingMode.HighQuality
Select Case State
Case MouseState.None
Dim lgb As New LinearGradientBrush(ClientRectangle, Color.FromArgb(123, 190, 216), Color.FromArgb(108, 175, 201), 90S)
G.FillPath(lgb, Draw.RoundRect(ClientRectangle, 2))
Dim p As New Pen(New SolidBrush(Color.FromArgb(60, 113, 132)))
G.DrawPath(p, Draw.RoundRect(ClientRectangle, 2))
Dim Ip As New Pen(Color.FromArgb(75, Color.White))
G.DrawPath(Ip, Draw.RoundRect(InnerRect, 2))
Case MouseState.Over
Dim lgb As New LinearGradientBrush(ClientRectangle, Color.FromArgb(113, 180, 206), Color.FromArgb(114, 181, 207), 90S)
G.FillPath(lgb, Draw.RoundRect(ClientRectangle, 2))
Dim p As New Pen(New SolidBrush(Color.FromArgb(60, 113, 132)))
G.DrawPath(p, Draw.RoundRect(ClientRectangle, 2))
Dim Ip As New Pen(Color.FromArgb(75, Color.White))
G.DrawPath(Ip, Draw.RoundRect(InnerRect, 2))
Case MouseState.Down
Dim lgb As New LinearGradientBrush(ClientRectangle, Color.FromArgb(123, 190, 216), Color.FromArgb(108, 175, 201), 90S)
G.FillPath(lgb, Draw.RoundRect(ClientRectangle, 2))
Dim p As New Pen(New SolidBrush(Color.FromArgb(60, 113, 132)))
G.DrawPath(p, Draw.RoundRect(ClientRectangle, 2))
Dim Ip As New Pen(Color.FromArgb(75, Color.White))
G.DrawPath(Ip, Draw.RoundRect(InnerRect, 2))
End Select
G.DrawString(Text, drawFont, New SolidBrush(Color.White), New Rectangle(0, 1, Width - 1, Height - 1), New StringFormat() With {.Alignment = StringAlignment.Center, .LineAlignment = StringAlignment.Center})
e.Graphics.DrawImage(B.Clone(), 0, 0)
G.Dispose() : B.Dispose()
End Sub
End Class
Public Class EffectualButtonOrange : Inherits Control
#Region " MouseStates "
Dim State As MouseState = MouseState.None
Protected Overrides Sub OnMouseDown(e As System.Windows.Forms.MouseEventArgs)
MyBase.OnMouseDown(e)
State = MouseState.Down : Invalidate()
End Sub
Protected Overrides Sub OnMouseUp(e As System.Windows.Forms.MouseEventArgs)
MyBase.OnMouseUp(e)
State = MouseState.Over : Invalidate()
End Sub
Protected Overrides Sub OnMouseEnter(e As System.EventArgs)
MyBase.OnMouseEnter(e)
State = MouseState.Over : Invalidate()
End Sub
Protected Overrides Sub OnMouseLeave(e As System.EventArgs)
MyBase.OnMouseLeave(e)
State = MouseState.None : Invalidate()
End Sub
#End Region
Sub New()
SetStyle(ControlStyles.UserPaint Or ControlStyles.SupportsTransparentBackColor, True)
BackColor = Color.Transparent
ForeColor = Color.FromArgb(205, 205, 205)
DoubleBuffered = True
End Sub
Protected Overrides Sub OnPaint(e As System.Windows.Forms.PaintEventArgs)
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 InnerRect As New Rectangle(1, 1, Width - 3, Height - 3)
MyBase.OnPaint(e)
G.Clear(BackColor)
Dim drawFont As New Font("Tahoma", 8, FontStyle.Bold)
'G.CompositingQuality = CompositingQuality.HighQuality
G.SmoothingMode = SmoothingMode.HighQuality
Select Case State
Case MouseState.None
Dim lgb As New LinearGradientBrush(ClientRectangle, Color.FromArgb(214, 162, 68), Color.FromArgb(199, 147, 53), 90S)
G.FillPath(lgb, Draw.RoundRect(ClientRectangle, 2))
Dim p As New Pen(New SolidBrush(Color.FromArgb(142, 107, 46)))
G.DrawPath(p, Draw.RoundRect(ClientRectangle, 2))
Dim Ip As New Pen(Color.FromArgb(75, Color.White))
G.DrawPath(Ip, Draw.RoundRect(InnerRect, 2))
Case MouseState.Over
Dim lgb As New LinearGradientBrush(ClientRectangle, Color.FromArgb(204, 152, 58), Color.FromArgb(205, 153, 59), 90S)
G.FillPath(lgb, Draw.RoundRect(ClientRectangle, 2))
Dim p As New Pen(New SolidBrush(Color.FromArgb(142, 107, 46)))
G.DrawPath(p, Draw.RoundRect(ClientRectangle, 2))
Dim Ip As New Pen(Color.FromArgb(75, Color.White))
G.DrawPath(Ip, Draw.RoundRect(InnerRect, 2))
Case MouseState.Down
Dim lgb As New LinearGradientBrush(ClientRectangle, Color.FromArgb(214, 162, 68), Color.FromArgb(199, 147, 53), 90S)
G.FillPath(lgb, Draw.RoundRect(ClientRectangle, 2))
Dim p As New Pen(New SolidBrush(Color.FromArgb(142, 107, 46)))
G.DrawPath(p, Draw.RoundRect(ClientRectangle, 2))
Dim Ip As New Pen(Color.FromArgb(75, Color.White))
G.DrawPath(Ip, Draw.RoundRect(InnerRect, 2))
End Select
G.DrawString(Text, drawFont, New SolidBrush(Color.White), New Rectangle(0, 1, Width - 1, Height - 1), New StringFormat() With {.Alignment = StringAlignment.Center, .LineAlignment = StringAlignment.Center})
e.Graphics.DrawImage(B.Clone(), 0, 0)
G.Dispose() : B.Dispose()
End Sub
End Class
Public Class EffectualButtonGray : Inherits Control
#Region " MouseStates "
Dim State As MouseState = MouseState.None
Protected Overrides Sub OnMouseDown(e As System.Windows.Forms.MouseEventArgs)
MyBase.OnMouseDown(e)
State = MouseState.Down : Invalidate()
End Sub
Protected Overrides Sub OnMouseUp(e As System.Windows.Forms.MouseEventArgs)
MyBase.OnMouseUp(e)
State = MouseState.Over : Invalidate()
End Sub
Protected Overrides Sub OnMouseEnter(e As System.EventArgs)
MyBase.OnMouseEnter(e)
State = MouseState.Over : Invalidate()
End Sub
Protected Overrides Sub OnMouseLeave(e As System.EventArgs)
MyBase.OnMouseLeave(e)
State = MouseState.None : Invalidate()
End Sub
#End Region
Sub New()
SetStyle(ControlStyles.UserPaint Or ControlStyles.SupportsTransparentBackColor, True)
BackColor = Color.Transparent
ForeColor = Color.FromArgb(205, 205, 205)
DoubleBuffered = True
End Sub
Protected Overrides Sub OnPaint(e As System.Windows.Forms.PaintEventArgs)
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 InnerRect As New Rectangle(1, 1, Width - 3, Height - 3)
MyBase.OnPaint(e)
G.Clear(BackColor)
Dim drawFont As New Font("Tahoma", 8, FontStyle.Bold)
'G.CompositingQuality = CompositingQuality.HighQuality
G.SmoothingMode = SmoothingMode.HighQuality
Select Case State
Case MouseState.None
Dim lgb As New LinearGradientBrush(ClientRectangle, Color.FromArgb(203, 201, 205), Color.FromArgb(188, 186, 190), 90S)
G.FillPath(lgb, Draw.RoundRect(ClientRectangle, 2))
Dim p As New Pen(New SolidBrush(Color.FromArgb(117, 120, 117)))
G.DrawPath(p, Draw.RoundRect(ClientRectangle, 2))
Dim Ip As New Pen(Color.FromArgb(75, Color.White))
G.DrawPath(Ip, Draw.RoundRect(InnerRect, 2))
Case MouseState.Over
Dim lgb As New LinearGradientBrush(ClientRectangle, Color.FromArgb(193, 191, 195), Color.FromArgb(194, 192, 196), 90S)
G.FillPath(lgb, Draw.RoundRect(ClientRectangle, 2))
Dim p As New Pen(New SolidBrush(Color.FromArgb(117, 120, 117)))
G.DrawPath(p, Draw.RoundRect(ClientRectangle, 2))
Dim Ip As New Pen(Color.FromArgb(75, Color.White))
G.DrawPath(Ip, Draw.RoundRect(InnerRect, 2))
Case MouseState.Down
Dim lgb As New LinearGradientBrush(ClientRectangle, Color.FromArgb(203, 201, 205), Color.FromArgb(188, 186, 190), 90S)
G.FillPath(lgb, Draw.RoundRect(ClientRectangle, 2))
Dim p As New Pen(New SolidBrush(Color.FromArgb(117, 120, 117)))
G.DrawPath(p, Draw.RoundRect(ClientRectangle, 2))
Dim Ip As New Pen(Color.FromArgb(75, Color.White))
G.DrawPath(Ip, Draw.RoundRect(InnerRect, 2))
End Select
G.DrawString(Text, drawFont, New SolidBrush(Color.FromArgb(50, 50, 50)), New Rectangle(0, 1, Width - 1, Height - 1), New StringFormat() With {.Alignment = StringAlignment.Center, .LineAlignment = StringAlignment.Center})
e.Graphics.DrawImage(B.Clone(), 0, 0)
G.Dispose() : B.Dispose()
End Sub
End Class
Public Class EffectualTheme : Inherits ContainerControl
Sub New()
SetStyle(ControlStyles.UserPaint Or ControlStyles.SupportsTransparentBackColor, True)
BackColor = Color.FromArgb(25, 25, 25)
DoubleBuffered = True
End Sub
Dim _SubText As String
Public Shadows Property Subtext() As String
Get
Return _SubText
End Get
Set(ByVal v As String)
_SubText = v
Invalidate()
End Set
End Property
Protected Overrides Sub OnPaint(ByVal e As System.Windows.Forms.PaintEventArgs)
Dim B As New Bitmap(Width, Height)
Dim G As Graphics = Graphics.FromImage(B)
Dim MainBox As New Rectangle(0, 0, Width, 32)
Dim SecondBox As New Rectangle(0, 33, Width, Height)
Dim BottomBox As New Rectangle(-3, Height - 25, Width + 5, Height - 25)
MyBase.OnPaint(e)
G.Clear(Color.Fuchsia)
G.CompositingQuality = CompositingQuality.HighQuality
Dim d As New ImageToCodeClass
Dim HATCHIMAGE As Bitmap = d.CodeToImage("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")
Dim BODYIMAGE As Bitmap = d.CodeToImage("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")
Dim TEXTUREIMAGE As New TextureBrush(HATCHIMAGE, WrapMode.TileFlipXY)
Dim BACKIMAGE As New TextureBrush(BODYIMAGE, WrapMode.TileFlipXY)
G.FillRectangle(TEXTUREIMAGE, MainBox)
Dim p1 As New Pen(New SolidBrush(Color.FromArgb(35, 35, 35)))
G.DrawLine(p1, 0, 31, Width, 31)
Dim p2 As New Pen(New SolidBrush(Color.FromArgb(50, 50, 50)))
G.DrawLine(p2, 0, 30, Width, 30)
G.DrawLine(Pens.Black, 0, 32, Width, 32)
G.FillRectangle(BACKIMAGE, SecondBox)
Dim Pt As Point() = {New Point(10, 0), New Point(10, 66), New Point(36, 40), _
New Point(62, 66), New Point(62, 0)}
Dim penCurrent As New Pen(Color.Black)
G.DrawPolygon(penCurrent, Pt)
Dim br As New SolidBrush(Color.FromArgb(86, 86, 86))
G.FillPolygon(br, Pt)
Dim Pt2 As Point() = {New Point(14, 0), New Point(14, 62), New Point(36, 40), _
New Point(58, 62), New Point(58, 0)}
Dim penCurrent2 As New Pen(Color.FromArgb(51, 51, 50))
G.DrawPolygon(penCurrent2, Pt2)
Dim br2 As New HatchBrush(HatchStyle.SmallGrid, Color.FromArgb(52, 52, 51), Color.FromArgb(48, 49, 48))
G.FillPolygon(TEXTUREIMAGE, Pt2)
G.DrawLine(Pens.Black, 10, 0, 10, 66)
G.DrawLine(Pens.Black, 10, 66, 36, 40)
Dim p As New Font("Tahoma", 10, FontStyle.Bold)
G.DrawString(_SubText, p, Brushes.WhiteSmoke, 68, 9)
Dim IconRect As New Rectangle(23, 8, 26, 26)
G.DrawIcon(FindForm.Icon, IconRect)
Dim BottomPen As New Pen(New SolidBrush(Color.FromArgb(99, 99, 99)), 7)
G.DrawRectangle(BottomPen, BottomBox)
Dim BOTTOMIMAGE As Bitmap = d.CodeToImage("/9j/4AAQSkZJRgABAQEAYABgAAD/2wBDAAIBAQIBAQICAgICAgICAwUDAwMDAwYEBAMFBwYHBwcGBwcICQsJCAgKCAcHCg0KCgsMDAwMBwkODw0MDgsMDAz/2wBDAQICAgMDAwYDAwYMCAcIDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAz/wAARCAA9AL8DASIAAhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/8QAHwEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREAAgECBAQDBAcFBAQAAQJ3AAECAxEEBSExBhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwD6dhvlt5UA2MpJJYnoPUAdAMdR2PuKlN8UmeABhGeThiMY5yD6cn6fjUcMQiQmNAjyNjBAVuhyQeoGP6fSpDE9qoT7O7IzHBBy2AOemeO3t/LMqww3MkIjQE3Clxjkjv8Aw56KD/Omx2whjAc4aUjG4Ekk5Pr9339+etSOjWrxFUVy3HU/KO+cdhx17cU9v3BcIIw0qjlGyVAzjAPbPr6igLEVs8Fu6qxIDfdAbue3+7/LPvVeWIxs7EbmBKKGyRnr/wB8479qsJCYY3MaCTZtIGdpBJxlck8Afl+PEL3CQSgBULSFc7iMRHGc9en06Z79gES3mQ4kkAd3TYE+VRn8gQBwfbFSaayLaLGQDkbgwUEoe/4dP/r1BJbyWls1yZlmV1xHk4AIGOg6AHjtjPcGmv5llACC7lEDqVXGzJHGPT9Bn34QEkBdo2jIkfCAD5dpPXOOOAOfofzq/Mi6WXRiHeQF24xsIAOO+AOeee/1qrYqUt45XdVEjkZIAKEc55wAM+3H8pdTvltFkjaJZYyc7lPynIOSc8AZx6jkUwTG212GvWZBK4LjglSFUZPIxkKMfhx1zUBWNCWYgqy+ZsL428fkVHJ9sVJY6omnSSSIwiBfBIA+QZwTnHAye/Q/XmoJkMTec4DghVyo6cfkoyT6j8aAaATx2ZMcmXjmlDfcwcBeeRjA57ZIqa1ntLVsJIJCDyQhAIHPXPAAz9P1EW+CxeEGWdi/OFiDbDgjGDn5ePXjtVi0ENo7KrygA/LtgGM8gnPUDnHtx68JAWGkazjkw8KQyMAcrk8HryDgDp3x1qozi2vESKaIrMGXIXb6ngdlHU84GCatC1FlenbctGQVG2RAHA54bJPHbH+RHe2RN2kiyxzmI/6vbjaMYyB1CgevqfamCZOZ4xeLHG9vM0nVi2CR6r7DHUdvqKiLeRYoHO2VfmVVlwBgBs5PbJPXpx60iWz210XjHltJtwhCjb689QuOfy69KdciSztQohDqG4IKnAAAPrx29v5ADZp2h09ELR3CIwAKvht3XjOMKD/P8KitZzBMN20NcMcs43ZJGcdfu++O/PWpnR1047RFMzNuHy8JjjBAHQcYz24piuLa2dikSh13M0UagKTkAcjOM8/iKARnXUMcWoALbmVVdP4+Pm5I4PAx+WferVxbGFHdbMBlIC5ckqfvEf7o4Ge1R3vMs6wIDGzIy5O1vTIyT8ox+H41Znja2aRgI2DyDOW2lDsznOeFzj6c9eyQXILkTvE4dVYlCNhJGD7Z6AcH2xT9LsDany2ZJDtCnYMsDjJz7dKR47mwt2mVUlZlwnzZwceg6Dt7Z7g06JJYXLCIuNgcELgJnt1HA6Y7fU8MEyzHGsEgWQGYMCRj5cY7Y54HX2qaSNVtAyEbAMq2OUPsD/CB+VQNbLGuDNGzEYRQ+3gcEZPQYz/9aldHggEhUM8TY2mRcjt0x05z7frQAsDPZpg/vQwEhCg4Xv8Al15H86jkMUBYqDsfccgZKnGMD2x+WaRryOMq+53jc+WDvHT0x2HfGPz4piX8dvISytLIQOoKtHyB+WO/bNAWHTolqDExaRZcEfKQTyTjHXAzg49apSQrYSoURU8xucngkHPft3/HrU1xdC2hkkZny5fAxgqMHA+n8veo0uoEnSVN+0LtYsQAGyemB93v7UgJvsrQ26qAjyFcqXBIU8nHHO3p34/SmQzJZ24ikMhLgpuJ3AAcgAdcd89s1LCRbtJkRzKTvKhidnOAee2ccnjGfeoJ5ks0M7CQgj5wHBCrg9eCTwffGaLBYtWUJtSvL3ACkbmXKgeuPT/HPemTkadJM7SbXmCY8tQwAxgcEHjI9PrUkNvHGXdWKtJGYlBYhlCnPTHAHv0qBdWMFzLJC5d449sb9u/Y9AAPw/WmBn6RBDDOWkkM7OCjqoIbGCcDnp09x/K9IYY/tAQlUVVCFh8oII6e2B+H40kUsrz2z+XHvAyC21QpxnJ6/LjnFPmnFpcurAuswAyoALMMZIycYOfw496lsTZU0uWM3EpkRGhDrk55QbupyMgZI47Uv2qCwtoXR0Z3+cYkw33+O/A4H09SKjkja2vlZYiollEoJyAFH8hk9uRg+1O2kGMq7MpyjKAo2cnHJ7YIz6e9LmC5eiZGIlEZll3bZS77duOO3Ye3SpYGihu1KlfmYgHeeCMnBz/D/LOazbWEWH2lUEjhG3EucLyPw+UY/oac8EisokEcyyMXwyFCozyfcDJPH5c1SY0y9cXAtZQVCyNtIDKu0DHbGMYGc89KfPKEghLOQrEAMI1G0kHnpwoH5VQXFuGWW8h3tlUQEKFAyCM+mM//AFqnmd44owUklKuORt4I9e+Oenv+NJsVyaznlsrOZC3nB2EhMeR79j09xSR6msdqSpjYMQz7lyUOcEDPbH4DNUoLwxQsGEjRGQAEHGF9OvA9sf0qY6lFFZkON5fAOVw6DIA59AD17Zpp3BFZr2OO5eNIy7OrMGIKD7xOB6AZxx61oXlxJDKAQI45H+bOSucDue2eenfrWVayx2YHlyyHckiAsv8ADyPTt+nvWldIGCyxMCrnBYttUHPp0298ds0xk7TzwWyiNRI5UHlCSMdhjnaBjvxj8KjsL5bJnjdZ51dACuNxGD0A9Oh6cZp0dytnEqRmKUupdgHG6PnHvx05ORjPvUNvEbeczbgXlHIJZgv17n+maARciuJrKTyvMDZyD90nHbjH3cenT8ahlVo4ASSyy5UrsAU8dv8AZx6dMfShMx2zMiiQIfmYMAduc5PGcD26UkzyQaaY90hbOcg52YP6Dg/5PAFiOKd7UxLhGQg/6xSAnUZB6hR1z05pssRsDhWy74GDgH736Dr9Pfs0SSxSguwk8znGzgY/XAPOR0z70PAE+UE5Y7lI4C+59v8APrQCQ5Y1t2fczOjjeO7Ee3tyfXvnOaq3NqLW9jZBGZnYlTtJwCDx16D/AD7S2URgKFydzZUAYBU4P6c/hQWbTrZ48lkk9AQw5yfXjHOOcUgCKNbeOUSSne5BVI1B2ep/3fz/ABptzF5UiRlSc/Lu3bT75/2QMfT8qnic2sJXdthDHZGchiu7qCe3I69O3WpOLbB2gFjyQAMcZJ6dOOnUGgBbqBYjMGDsw6MpyAMrzwcbcccg9fzyneGwJkjRgjAllJIA4IOOe/v61s3eoeTb5kaMys2PmGcgA+nb9KpJNCHUiNSC2D/CFPTuOnT6Z96TYmQLYNvgkIIhA8wkvyBtIxweAPbpnvzTry8MFqiJmNsf3wWAI9MZxg49vfNOVWhkZUCyQsQxGVGcEZI4IAyR1zjNZtzcSJNJDJFkTAKoQKSq5OAfQdfoDUtjSuD3TWluEZZg0W3C4+6euCew7/495/7R+zeRHJHMjseMnCgfX+6Bx7e9Jb6f9imYsHmebB2LtUjHGfoBnvwKu3CG0cSSqHJw2NvIGPlPU8D8aBNWIvPNvI0aq3lbCC5wdoI7j0Ge4PPrUqsbaPfFOgaX5FJj+YHcOP8AZGfT396hgTPmQozSblwXIBGfcdh6HnGTT44UtZYzGCEYsMmPA5H16enXHB9qqIIm+cxgQqwldssSvzKAcc56LyOnT8arJFDAiiQtJJI5AwoA6diei49PT6UljK6iVcq4iYhtqkEgHPJ5wB1Pp+NKivBFIrFiDyB3XB9ewGD/AJPCkDCK3MUDMpLBlC/vVO1OcZBHOB69OanYC10oIksTOUCmPGGzn9AOfp754rur2jFgFdmxIQBkDB/PGfTkZHrTDIvlyCNEUSHcSchAcdD7HP8AnmhMcUX9Kt7ezgjZ3ZnWMkBOSwPT8OT6985zmpBC9pfRMTG5J3ggEFRjkfQf574zNKE1gbaMi3R5Wwqhx+74J4x0H5Y569a0pDJY2rQ4keNyzAoCGHcg9flxzjnGKpMbQrBUtGjAV2l3SLs52jJ7dl/MfWnwRiIIjs8YK4LD7wI7AdxjHHGM/So2iTT4XaNppFboMEFhnPGf4c49Mdqdp7IyCKVG3Z+dVjA7Z/LPb1piGTRLYKqsoldjglQRt6ZJ9B708xraW7BZWZickgj5AO/sB046Y70sw+wBgPnEcZkx0BH932Ax25qqZZbckhwxdWbkdNpIx7j/ABpAHkG0lWRnRlBOQ2AVHXj0Az+HWp3VoCRDGvmv847YH1HQDJH4/lnLqDWyhCiOkgY4IHGD+v8A+up7jUvJnmiaNX3AMCTyvzAYHfHcelAIsFJrSAERopmABY4YBjgleDkL/Ko2UWiA+arlu4OCBjPPPAGccYxzUsMpZ4yeTJEX/wB0KDhR6AY7evaotMw7mTBJeMyYLEgDaTt69Ocf40mxNk73LWpj3LHIxDLxkMrfQjhR79OtMOWkKqyusnzFt3y/Uegx+X5VDdKdJYSrh2ugx5LYTacY68jp+VaUUS2NvMQN4gJYD1AP3ee3P4UuYLmdcRyReWxMRaRPmPUHnH4Aevb3qAyToNiHcjj5mGQqAHqc+nr26VZurg2MUh2q7QsQMgAAAZwOOBnHrVSPUpFaYR/uzBGXBBOSMDK/Tnvmk2DZM0t1p0SxmMFwQiMeijIOAOmPXGf8KYWSOeKRpAWB27NgBweD9FHBz2yKa1+YI2kC4DIzAKcbcHHHBxkAfrUdtfAPIqxgGddxyxIGADj9MfiaCol9YpY0gWQx3DSbvn4/d4bqc9F/lSy3Bt4ljc+Z5hLIwjBLj0XHbqeOlVIr0WtnLKIwHHmMNp246jH0x+XNERWytUCGTaF83G7A4Vjj6cfrQDVyzJM9rdOyiQO2CAUKkDgc+gGc9DjFX7KF7K4hdpGkIYDBJyecZx2Hvz/jh2mpsspnKhmkG75iTjBHA7Y+Y444rRtZjpSC4G6R29TjA44Hp14x0xTTE9CS4totLunViWd2JO2MqV55z2AyOvpTXP2SNw8rneN5YYBRgD+QHA46Y71HduLW5kYAs0aF+vBBz8v04+vNSRStboXJDsysQT2wSPxHX86TZIxALeQCQHLjbltqlDn8wBu+o61GFFohhSKZ5pCcY+9kEZIwMAAE/wCeli3uo7SFPMi85piSDnGzH4c1K7ojyIIyW2MwLNnaQe3fH40DTMaxlW1lyA6ggBjIitg45HHIX8eK1kljsrJma6d9+FbAxheo78DHHGMc1UskYaiIlcqZYBJnAIUA8KB2HB6etbWmWrOgIlcGVSTnkBQhbb9Ocf400wbM1pligAiSWRRlVC5Uq3PY9FHv061UhZNP1GcEzTeaA5YKzjPsAc47e1aV9bHRTtaR7lpwWBb5Qm04xgdun5VYsLRraUhZCANwBA5AB6fTmmmCZ//Z")
Dim BOTTOMTEXTURE As New TextureBrush(BOTTOMIMAGE, WrapMode.TileFlipXY)
G.FillRectangle(BOTTOMTEXTURE, BottomBox)
e.Graphics.DrawImage(B.Clone(), 0, 0)
G.Dispose() : B.Dispose()
End Sub
Protected Overrides Sub OnCreateControl()
MyBase.OnCreateControl()
Me.ParentForm.FormBorderStyle = FormBorderStyle.Sizable
Me.ParentForm.ShowIcon = False
Me.ParentForm.TransparencyKey = Color.Fuchsia
Dock = DockStyle.Fill
End Sub
End Class
Public Class EffectualGroupBox : Inherits ContainerControl
Sub New()
SetStyle(ControlStyles.UserPaint Or ControlStyles.SupportsTransparentBackColor, True)
BackColor = Color.Transparent
DoubleBuffered = True
End Sub
Protected Overrides Sub OnPaint(e As System.Windows.Forms.PaintEventArgs)
Dim B As New Bitmap(Width, Height)
Dim G As Graphics = Graphics.FromImage(B)
Dim Body As New Rectangle(0, 0, Width - 1, Height - 1)
MyBase.OnPaint(e)
G.Clear(Color.Transparent)
G.SmoothingMode = SmoothingMode.HighQuality
G.CompositingQuality = CompositingQuality.HighQuality
Dim ICT As New ImageToCodeClass
Dim GROUPHATCH As Bitmap = ICT.CodeToImage("/9j/4AAQSkZJRgABAQEAYABgAAD/2wBDAAIBAQIBAQICAgICAgICAwUDAwMDAwYEBAMFBwYHBwcGBwcICQsJCAgKCAcHCg0KCgsMDAwMBwkODw0MDgsMDAz/2wBDAQICAgMDAwYDAwYMCAcIDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAz/wAARCAAcABwDASIAAhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/8QAHwEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREAAgECBAQDBAcFBAQAAQJ3AAECAxEEBSExBhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwD9OYVDLHsRNyYPTvgc/oO9NtljUO2FZQ2OmQPwz9PToOKfFGxKkyuVIzy3U8fXI4+nJpkEOQ6mWUlWOdx+h5656fqeKV+40hViC3AUIpKoQBnkenGR7du3XipF2R8BAQenJHGPaoo0xOql5AxUHGcBuR7+3XHc1LAGt02qGkA7nII9ulDb3JknsMhjkdUIKMCvygZwMgZ5+mf0ptuXlLAGMksSxyTzkdBz7/TipbRitojA8kA+v+elNtJT++YAApNtHfjAob6FJX1GozxTAERgkddxyPXgn0J7elOSd1HzFQT0xuNP4WUgZ4iLdT6mpEiUqGIJLc0k0Ckrn//Z")
Dim GROUPIMAGE As New TextureBrush(GROUPHATCH, WrapMode.TileFlipXY)
G.FillRectangle(GROUPIMAGE, Body)
Dim p As New Pen(New SolidBrush(Color.FromArgb(143, 143, 143)))
G.DrawRectangle(p, Body)
Dim p1 As New Pen(New SolidBrush(Color.FromArgb(174, 178, 172)))
G.DrawRectangle(p1, 1, 1, Width - 3, Height - 3)
Dim p2 As New Pen(New SolidBrush(Color.FromArgb(194, 192, 200)))
G.DrawRectangle(p2, 2, 2, Width - 5, Height - 5)
Dim t As New Font("Tahoma", 10, FontStyle.Bold)
'G.DrawString(Text, t, New SolidBrush(Color.FromArgb(50, 50, 50)), New Rectangle(-1, 1, Width - 1, 25), New StringFormat() With {.Alignment = StringAlignment.Center, .LineAlignment = StringAlignment.Center})
G.DrawString(Text, t, New SolidBrush(Color.FromArgb(40, 40, 40)), New Rectangle(0, 1, Width - 1, 25), New StringFormat() With {.Alignment = StringAlignment.Center, .LineAlignment = StringAlignment.Center})
Dim UnderlineBrush As New SolidBrush(Color.FromArgb(126, 126, 126))
Dim UnderlinePen As New Pen(UnderlineBrush, 3)
G.DrawLine(UnderlinePen, 20, 24, Width - 20, 24)
Dim UnderlinePen2 As New Pen(UnderlineBrush, 1)
G.DrawLine(UnderlinePen2, 20, 27, Width - 20, 27)
e.Graphics.DrawImage(B.Clone(), 0, 0)
G.Dispose() : B.Dispose()
End Sub
End Class
Public Class EffectualProgressBarBlue : Inherits Control
#Region " Control Help - Properties & Flicker Control "
Private OFS As Integer = 0
Private Speed As Integer = 50
Private _Maximum As Integer = 100
Public Property Maximum() As Integer
Get
Return _Maximum
End Get
Set(ByVal v As Integer)
Select Case v
Case Is < _Value
_Value = v
End Select
_Maximum = v
Invalidate()
End Set
End Property
Private _Value As Integer = 0
Public Property Value() As Integer
Get
Select Case _Value
Case 0
Return 0
Case Else
Return _Value
End Select
End Get
Set(ByVal v As Integer)
Select Case v
Case Is > _Maximum
v = _Maximum
End Select
_Value = v
Invalidate()
End Set
End Property
Private _ShowPercentage As Boolean = False
Public Property ShowPercentage() As Boolean
Get
Return _ShowPercentage
End Get
Set(ByVal v As Boolean)
_ShowPercentage = v
Invalidate()
End Set
End Property
Protected Overrides Sub CreateHandle()
MyBase.CreateHandle()
' Dim tmr As New Timer With {.Interval = Speed}
' AddHandler tmr.Tick, AddressOf Animate
' tmr.Start()
Dim T As New Threading.Thread(AddressOf Animate)
T.IsBackground = True
'T.Start()
End Sub
Sub Animate()
While True
If OFS <= Width Then : OFS += 1
Else : OFS = 0
End If
Invalidate()
Threading.Thread.Sleep(Speed)
End While
End Sub
#End Region
Sub New()
MyBase.New()
DoubleBuffered = True
SetStyle(ControlStyles.UserPaint Or ControlStyles.SupportsTransparentBackColor, True)
BackColor = Color.Transparent
End Sub
Protected Overrides Sub OnPaint(ByVal e As System.Windows.Forms.PaintEventArgs)
Dim B As New Bitmap(Width, Height)
Dim G As Graphics = Graphics.FromImage(B)
G.SmoothingMode = SmoothingMode.HighQuality
Dim intValue As Integer = CInt(_Value / _Maximum * Width)
G.Clear(BackColor)
Dim gB As New LinearGradientBrush(New Rectangle(0, 0, Width - 1, Height - 1), Color.FromArgb(203, 201, 205), Color.FromArgb(188, 186, 190), 90S)
G.FillPath(gB, Draw.RoundRect(New Rectangle(0, 0, Width - 1, Height - 1), 1))
G.DrawPath(New Pen(New SolidBrush(Color.FromArgb(75, Color.White))), Draw.RoundRect(New Rectangle(1, 1, Width - 3, Height - 3), 1))
Dim g1 As New LinearGradientBrush(New Rectangle(2, 2, intValue - 1, Height - 2), Color.FromArgb(123, 190, 216), Color.FromArgb(108, 175, 201), 90S)
G.FillPath(g1, Draw.RoundRect(New Rectangle(0, 0, intValue - 1, Height - 2), 1))
Dim h1 As New HatchBrush(HatchStyle.DarkUpwardDiagonal, Color.FromArgb(40, Color.White), Color.FromArgb(20, Color.White))
G.FillPath(h1, Draw.RoundRect(New Rectangle(0, 0, intValue - 1, Height - 2), 1))
'G.DrawPath(New Pen(Color.FromArgb(125, 97, 94, 90)), Draw.RoundRect(New Rectangle(0, 1, Width - 1, Height - 3), 2))
G.DrawPath(New Pen(Color.FromArgb(117, 120, 117)), Draw.RoundRect(New Rectangle(0, 0, Width - 1, Height - 1), 2))
G.DrawPath(New Pen(Color.FromArgb(150, 97, 94, 90)), Draw.RoundRect(New Rectangle(0, 0, intValue - 1, Height - 1), 2))
G.DrawPath(New Pen(Color.FromArgb(60, 113, 132)), Draw.RoundRect(New Rectangle(0, 0, intValue - 1, Height - 1), 2)) 'colored bar outline
If _ShowPercentage Then
G.DrawString(Convert.ToString(String.Concat(Value, "%")), Font, Brushes.White, New Rectangle(0, 0, Width - 1, Height - 1), New StringFormat() With {.Alignment = StringAlignment.Center, .LineAlignment = StringAlignment.Center})
End If
e.Graphics.DrawImage(B.Clone(), 0, 0)
G.Dispose() : B.Dispose()
End Sub
End Class
Public Class EffectualProgressBarOrange : Inherits Control
#Region " Control Help - Properties & Flicker Control "
Private OFS As Integer = 0
Private Speed As Integer = 50
Private _Maximum As Integer = 100
Public Property Maximum() As Integer
Get
Return _Maximum
End Get
Set(ByVal v As Integer)
Select Case v
Case Is < _Value
_Value = v
End Select
_Maximum = v
Invalidate()
End Set
End Property
Private _Value As Integer = 0
Public Property Value() As Integer
Get
Select Case _Value
Case 0
Return 0
Case Else
Return _Value
End Select
End Get
Set(ByVal v As Integer)
Select Case v
Case Is > _Maximum
v = _Maximum
End Select
_Value = v
Invalidate()
End Set
End Property
Private _ShowPercentage As Boolean = False
Public Property ShowPercentage() As Boolean
Get
Return _ShowPercentage
End Get
Set(ByVal v As Boolean)
_ShowPercentage = v
Invalidate()
End Set
End Property
Protected Overrides Sub CreateHandle()
MyBase.CreateHandle()
' Dim tmr As New Timer With {.Interval = Speed}
' AddHandler tmr.Tick, AddressOf Animate
' tmr.Start()
Dim T As New Threading.Thread(AddressOf Animate)
T.IsBackground = True
'T.Start()
End Sub
Sub Animate()
While True
If OFS <= Width Then : OFS += 1
Else : OFS = 0
End If
Invalidate()
Threading.Thread.Sleep(Speed)
End While
End Sub
#End Region
Sub New()
MyBase.New()
DoubleBuffered = True
SetStyle(ControlStyles.UserPaint Or ControlStyles.SupportsTransparentBackColor, True)
BackColor = Color.Transparent
End Sub
Protected Overrides Sub OnPaint(ByVal e As System.Windows.Forms.PaintEventArgs)
Dim B As New Bitmap(Width, Height)
Dim G As Graphics = Graphics.FromImage(B)
G.SmoothingMode = SmoothingMode.HighQuality
Dim intValue As Integer = CInt(_Value / _Maximum * Width)
G.Clear(BackColor)
Dim gB As New LinearGradientBrush(New Rectangle(0, 0, Width - 1, Height - 1), Color.FromArgb(203, 201, 205), Color.FromArgb(188, 186, 190), 90S)
G.FillPath(gB, Draw.RoundRect(New Rectangle(0, 0, Width - 1, Height - 1), 1))
G.DrawPath(New Pen(New SolidBrush(Color.FromArgb(75, Color.White))), Draw.RoundRect(New Rectangle(1, 1, Width - 3, Height - 3), 1))
Dim g1 As New LinearGradientBrush(New Rectangle(2, 2, intValue - 1, Height - 2), Color.FromArgb(214, 162, 68), Color.FromArgb(199, 147, 53), 90S)
G.FillPath(g1, Draw.RoundRect(New Rectangle(0, 0, intValue - 1, Height - 2), 1))
Dim h1 As New HatchBrush(HatchStyle.DarkUpwardDiagonal, Color.FromArgb(40, Color.White), Color.FromArgb(20, Color.White))
G.FillPath(h1, Draw.RoundRect(New Rectangle(0, 0, intValue - 1, Height - 2), 1))
'G.DrawPath(New Pen(Color.FromArgb(125, 97, 94, 90)), Draw.RoundRect(New Rectangle(0, 1, Width - 1, Height - 3), 2))
G.DrawPath(New Pen(Color.FromArgb(117, 120, 117)), Draw.RoundRect(New Rectangle(0, 0, Width - 1, Height - 1), 2))
G.DrawPath(New Pen(Color.FromArgb(150, 97, 94, 90)), Draw.RoundRect(New Rectangle(0, 0, intValue - 1, Height - 1), 2))
G.DrawPath(New Pen(Color.FromArgb(142, 107, 46)), Draw.RoundRect(New Rectangle(0, 0, intValue - 1, Height - 1), 2))
If _ShowPercentage Then
G.DrawString(Convert.ToString(String.Concat(Value, "%")), Font, Brushes.White, New Rectangle(0, 0, Width - 1, Height - 1), New StringFormat() With {.Alignment = StringAlignment.Center, .LineAlignment = StringAlignment.Center})
End If
e.Graphics.DrawImage(B.Clone(), 0, 0)
G.Dispose() : B.Dispose()
End Sub
End Class
<DefaultEvent("CheckedChanged")> Public Class EffectualCheckBox : Inherits Control
#Region " Control Help - MouseState & Flicker Control"
Private State As MouseState = MouseState.None
Protected Overrides Sub OnMouseEnter(ByVal e As System.EventArgs)
MyBase.OnMouseEnter(e)
State = MouseState.Over
Invalidate()
End Sub
Protected Overrides Sub OnMouseDown(ByVal e As System.Windows.Forms.MouseEventArgs)
MyBase.OnMouseDown(e)
State = MouseState.Down
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 OnTextChanged(ByVal e As System.EventArgs)
MyBase.OnTextChanged(e)
Invalidate()
End Sub
Private _Checked As Boolean
Property Checked() As Boolean
Get
Return _Checked
End Get
Set(ByVal value As Boolean)
_Checked = value
Invalidate()
End Set
End Property
Protected Overrides Sub OnResize(ByVal e As System.EventArgs)
MyBase.OnResize(e)
Height = 14
End Sub
Protected Overrides Sub OnClick(ByVal e As System.EventArgs)
_Checked = Not _Checked
RaiseEvent CheckedChanged(Me)
MyBase.OnClick(e)
End Sub
Event CheckedChanged(ByVal sender As Object)
#End Region
Sub New()
MyBase.New()
SetStyle(ControlStyles.UserPaint Or ControlStyles.SupportsTransparentBackColor Or ControlStyles.OptimizedDoubleBuffer, True)
BackColor = Color.Transparent
ForeColor = Color.Black
Size = New Size(145, 16)
DoubleBuffered = True
End Sub
Protected Overrides Sub OnPaint(ByVal e As System.Windows.Forms.PaintEventArgs)
Dim B As New Bitmap(Width, Height)
Dim G As Graphics = Graphics.FromImage(B)
Dim checkBoxRectangle As New Rectangle(0, 0, Height, Height - 1)
Dim Inner As New Rectangle(1, 1, Height - 2, Height - 3)
G.SmoothingMode = SmoothingMode.HighQuality
G.CompositingQuality = CompositingQuality.HighQuality
G.TextRenderingHint = Drawing.Text.TextRenderingHint.AntiAliasGridFit
G.Clear(Color.Transparent)
Dim bodyGrad As New LinearGradientBrush(checkBoxRectangle, Color.FromArgb(203, 201, 205), Color.FromArgb(188, 186, 190), 90S)
G.FillRectangle(bodyGrad, bodyGrad.Rectangle)
G.DrawRectangle(New Pen(Color.FromArgb(117, 120, 117)), checkBoxRectangle)
G.DrawRectangle(New Pen(Color.WhiteSmoke), Inner)
If Checked Then
Dim t As New Font("Marlett", 10, FontStyle.Regular)
G.DrawString("a", t, Brushes.Black, -1.5, 0)
End If
Dim drawFont As New Font("Tahoma", 8, FontStyle.Bold)
Dim nb As Brush = New SolidBrush(Color.FromArgb(40, 40, 40))
G.DrawString(Text, drawFont, nb, New Point(18, 7), New StringFormat With {.Alignment = StringAlignment.Near, .LineAlignment = StringAlignment.Center})
e.Graphics.DrawImage(B.Clone(), 0, 0)
G.Dispose() : B.Dispose()
End Sub
End Class
<DefaultEvent("CheckedChanged")> Public Class EffectualRadioButton : Inherits Control
#Region " Control Help - MouseState & Flicker Control"
Private R1 As Rectangle
Private G1 As LinearGradientBrush
Private State As MouseState = MouseState.None
Protected Overrides Sub OnMouseEnter(ByVal e As System.EventArgs)
MyBase.OnMouseEnter(e)
State = MouseState.Over
Invalidate()
End Sub
Protected Overrides Sub OnMouseDown(ByVal e As System.Windows.Forms.MouseEventArgs)
MyBase.OnMouseDown(e)
State = MouseState.Down
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 OnResize(ByVal e As System.EventArgs)
MyBase.OnResize(e)
Height = 16
End Sub
Protected Overrides Sub OnTextChanged(ByVal e As System.EventArgs)
MyBase.OnTextChanged(e)
Invalidate()
End Sub
Private _Checked As Boolean
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
Protected Overrides Sub OnClick(ByVal e As EventArgs)
If Not _Checked Then Checked = True
MyBase.OnClick(e)
End Sub
Event CheckedChanged(ByVal sender As Object)
Protected Overrides Sub OnCreateControl()
MyBase.OnCreateControl()
InvalidateControls()
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 EffectualRadioButton Then
DirectCast(C, EffectualRadioButton).Checked = False
End If
Next
End Sub
#End Region
Sub New()
MyBase.New()
SetStyle(ControlStyles.UserPaint Or ControlStyles.SupportsTransparentBackColor, True)
BackColor = Color.Transparent
ForeColor = Color.Black
Size = New Size(150, 16)
DoubleBuffered = True
End Sub
Protected Overrides Sub OnPaint(ByVal e As System.Windows.Forms.PaintEventArgs)
Dim B As New Bitmap(Width, Height)
Dim G As Graphics = Graphics.FromImage(B)
Dim radioBtnRectangle = New Rectangle(0, 0, Height, Height - 1)
Dim Inner As New Rectangle(1, 1, Height - 2, Height - 3)
G.SmoothingMode = SmoothingMode.HighQuality
G.CompositingQuality = CompositingQuality.HighQuality
G.TextRenderingHint = Drawing.Text.TextRenderingHint.AntiAliasGridFit
G.Clear(BackColor)
Dim bgGrad As New LinearGradientBrush(radioBtnRectangle, Color.FromArgb(203, 201, 205), Color.FromArgb(188, 186, 190), 90S)
G.FillEllipse(bgGrad, radioBtnRectangle)
G.DrawEllipse(New Pen(Color.FromArgb(117, 120, 117)), radioBtnRectangle)
G.DrawEllipse(New Pen(Color.WhiteSmoke), Inner)
If Checked Then
Dim t As New Font("Marlett", 8, FontStyle.Bold)
G.DrawString("n", t, New SolidBrush(Color.FromArgb(40, 40, 40)), 0, 3)
End If
Dim drawFont As New Font("Tahoma", 8, FontStyle.Bold)
Dim nb As Brush = New SolidBrush(Color.FromArgb(40, 40, 40))
G.DrawString(Text, drawFont, nb, New Point(18, 7), New StringFormat With {.Alignment = StringAlignment.Near, .LineAlignment = StringAlignment.Center})
e.Graphics.DrawImage(B.Clone(), 0, 0)
G.Dispose() : B.Dispose()
End Sub
End Class