Imports System.Drawing.Text
Imports System.IO
Imports System.Drawing.Drawing2D
Imports System.ComponentModel
Imports System.ComponentModel.Design
Imports System.Drawing.Design
Imports System.Windows.Forms
Public Class AVTheme
Inherits ContainerControl
Private C1 As Color = Color.FromArgb(242, 242, 242)
Private C2 As Color = Color.FromArgb(0, 166, 208)
Private B1 As New SolidBrush(C1)
Private B2 As New SolidBrush(C2)
Private F As Font
Private T As String
Private _PageName As String = "Scan"
Private _PageImage As Image
Private MouseP As Point = New Point(0, 0)
Private Cap As Boolean = False
Private MoveHeight As Integer = 48
Public Property PageName() As String
Get
Return _PageName
End Get
Set(v As String)
_PageName = v : Invalidate()
End Set
End Property
Public Property PageImage() As Image
Get
Return _PageImage
End Get
Set(v As Image)
_PageImage = v
End Set
End Property
Sub New()
MyBase.New()
Me.BackColor = C1
DoubleBuffered = True
Me.Dock = DockStyle.Fill
F = New Font("Segoe UI", 13, FontStyle.Regular)
End Sub
Protected Overrides Sub OnMouseDown(ByVal e As System.Windows.Forms.MouseEventArgs)
MyBase.OnMouseDown(e)
If e.Button = Windows.Forms.MouseButtons.Left And New Rectangle(0, 0, Width, MoveHeight).Contains(e.Location) Then
Cap = True : MouseP = e.Location
End If
End Sub
Protected Overrides Sub OnMouseUp(ByVal e As System.Windows.Forms.MouseEventArgs)
MyBase.OnMouseUp(e) : Cap = False
End Sub
Protected Overrides Sub OnMouseMove(ByVal e As System.Windows.Forms.MouseEventArgs)
MyBase.OnMouseMove(e)
If Cap Then
Parent.Location = MousePosition - MouseP
End If
End Sub
Protected Overrides Sub OnPaint(e As System.Windows.Forms.PaintEventArgs)
MyBase.OnPaint(e)
Dim G As Graphics
G = e.Graphics
G.SmoothingMode = SmoothingMode.None
Dim I As Bitmap = Me.ParentForm.Icon.ToBitmap
Dim IM As Image = I
T = Me.ParentForm.Text
G.FillRectangle(B2, New Rectangle(0, 48, Me.Width, 70))
G.DrawLine(New Pen(New SolidBrush(Color.FromArgb(203, 203, 203))), New Point(0, Me.Height - 49), New Point(Me.Width, Me.Height - 49))
G.DrawString(T, F, Brushes.Black, Me.Width / 2 - G.MeasureString(T, F).Width / 2, 24 - G.MeasureString(T, F).Height / 2)
G.DrawImage(IM, New Point(Me.Width / 2 - G.MeasureString(T, F).Width / 2 - IM.Width - 2, IM.Height / 2 - 7))
If Not Me.ParentForm.FormBorderStyle = FormBorderStyle.None Then
Me.ParentForm.FormBorderStyle = FormBorderStyle.None
End If
G.TextRenderingHint = TextRenderingHint.AntiAlias
G.DrawString(_PageName, New Font("Verdana", 17, FontStyle.Regular), Brushes.White, 105, 70)
If Not _PageImage Is Nothing Then
G.DrawImage(_PageImage, New Point(70, 84 - _PageImage.Height / 2))
End If
End Sub
End Class
Public Class AVWindowButton : Inherits Control
Private Hover As Color = Color.FromArgb(242, 242, 242)
Private _SetImage As String = "Close"
Sub New()
Me.Size = New Size(33, 33)
Me.DoubleBuffered = True
SetStyle(ControlStyles.SupportsTransparentBackColor, True)
Me.BackColor = Color.Transparent
End Sub
<TypeConverter(GetType(btnimProperty)), Category("Misc"), Description("Select Image from the list")>
Public Property SetImage() As String
Get
Return _SetImage
End Get
Set(value As String)
_SetImage = value
End Set
End Property
Protected Overrides Sub OnMouseEnter(ByVal e As EventArgs)
Hover = Color.FromArgb(228, 228, 228)
MyBase.Invalidate()
MyBase.OnMouseEnter(e)
End Sub
Protected Overrides Sub OnMouseLeave(ByVal e As EventArgs)
Hover = Color.FromArgb(242, 242, 242)
MyBase.Invalidate()
MyBase.OnMouseEnter(e)
End Sub
Protected Overrides Sub OnMouseUp(ByVal e As MouseEventArgs)
Hover = Color.FromArgb(214, 214, 214)
MyBase.Invalidate()
MyBase.OnMouseUp(e)
End Sub
Protected Overrides Sub OnMouseDown(ByVal e As MouseEventArgs)
Hover = Color.FromArgb(151, 151, 151)
MyBase.Invalidate()
MyBase.OnMouseClick(e)
End Sub
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
Protected Overrides Sub OnPaint(e As System.Windows.Forms.PaintEventArgs)
MyBase.OnPaint(e)
Dim G As Graphics
G = e.Graphics
G.SmoothingMode = SmoothingMode.HighQuality
G.FillPath(New SolidBrush(Color.FromArgb(Hover.ToArgb)), RoundRect(New Rectangle(0, 0, Width - 1, Height - 1), 3))
G.SmoothingMode = SmoothingMode.None
If _SetImage = "Close" Then
Using P1 As New Pen(Brushes.DimGray, 2)
P1.StartCap = LineCap.Triangle : P1.EndCap = LineCap.Triangle
G.DrawLine(P1, 6, 6, Me.Width - 6, Me.Height - 6)
G.DrawLine(P1, Me.Width - 6, 6, 6, Me.Height - 6)
End Using
ElseIf _SetImage = "Minimize" Then
Using P1 As New Pen(Brushes.DimGray, 2)
P1.StartCap = LineCap.Triangle : P1.EndCap = LineCap.Triangle
G.DrawLine(P1, 6, Me.Height - 6, Me.Width - 6, Me.Height - 6)
End Using
ElseIf _SetImage = "Maximize" Then
Using P1 As New Pen(Brushes.DimGray, 2)
P1.StartCap = LineCap.Triangle : P1.EndCap = LineCap.Triangle
G.FillRectangle(New SolidBrush(Color.FromArgb(Hover.ToArgb)), 6, 8, 16, 13)
G.DrawRectangle(P1, 6, 8, 16, 13)
G.FillRectangle(New SolidBrush(Color.FromArgb(Hover.ToArgb)), 12, Me.Height - 19, 16, 13)
G.DrawRectangle(P1, 12, Me.Height - 19, 16, 13)
End Using
ElseIf _SetImage = "Stop" Then
Dim R1 As New Rectangle(Me.Height / 2 - 6, Me.Width / 2 - 6, 12, 12)
G.FillRectangle(New SolidBrush(Color.DimGray), R1)
ElseIf _SetImage = "Play" Then
G.SmoothingMode = SmoothingMode.AntiAlias
Dim ptsArray As PointF() = {New PointF(10, 10), New PointF(Me.Width - 10, Me.Height / 2), New PointF(10, Me.Height - 10), New PointF(10, 10)}
Dim gp As New Drawing2D.GraphicsPath(Drawing2D.FillMode.Alternate)
gp.AddLines(ptsArray)
gp.CloseFigure()
G.FillPath(Brushes.DimGray, gp)
End If
End Sub
End Class
Public Class btnimProperty
Inherits System.ComponentModel.StringConverter
Public Overrides Function GetStandardValues(context As System.ComponentModel.ITypeDescriptorContext) As System.ComponentModel.TypeConverter.StandardValuesCollection
Return New StandardValuesCollection(myList)
End Function
Public Overrides Function GetStandardValuesSupported(context As System.ComponentModel.ITypeDescriptorContext) As Boolean
Return True
End Function
Public Overrides Function GetStandardValuesExclusive(context As System.ComponentModel.ITypeDescriptorContext) As Boolean
Return True
End Function
Private Function myList() As Collections.IList
Dim imgList As New Collection
With imgList
.Add("Close")
.Add("Minimize")
.Add("Maximize")
.Add("Stop")
.Add("Play")
End With
Return imgList
End Function
End Class
Public Class AVTextbox
Inherits Control
Dim WithEvents txtbox As New TextBox
Private _passmask As Boolean = False
Public Shadows Property UseSystemPasswordChar() As Boolean
Get
Return _passmask
End Get
Set(ByVal v As Boolean)
txtbox.UseSystemPasswordChar = UseSystemPasswordChar
_passmask = v
Invalidate()
End Set
End Property
Private _maxchars As Integer = 32767
Public Shadows Property MaxLength() As Integer
Get
Return _maxchars
End Get
Set(ByVal v As Integer)
_maxchars = v
txtbox.MaxLength = MaxLength
Invalidate()
End Set
End Property
Private _align As HorizontalAlignment
Public Shadows Property TextAlignment() As HorizontalAlignment
Get
Return _align
End Get
Set(ByVal v As HorizontalAlignment)
_align = v
Invalidate()
End Set
End Property
Private _multiline As Boolean = False
Public Shadows Property MultiLine() As Boolean
Get
Return _multiline
End Get
Set(ByVal value As Boolean)
_multiline = value
Invalidate()
End Set
End Property
Protected Overrides Sub OnTextChanged(ByVal e As System.EventArgs)
MyBase.OnTextChanged(e)
Invalidate()
End Sub
Protected Overrides Sub OnBackColorChanged(ByVal e As System.EventArgs)
MyBase.OnBackColorChanged(e)
txtbox.BackColor = BackColor
Invalidate()
End Sub
Protected Overrides Sub OnForeColorChanged(ByVal e As System.EventArgs)
MyBase.OnForeColorChanged(e)
txtbox.ForeColor = ForeColor
Invalidate()
End Sub
Protected Overrides Sub OnFontChanged(ByVal e As System.EventArgs)
MyBase.OnFontChanged(e)
txtbox.Font = Font
End Sub
Protected Overrides Sub OnGotFocus(ByVal e As System.EventArgs)
MyBase.OnGotFocus(e)
txtbox.Focus()
End Sub
Sub TextChngTxtBox() Handles txtbox.TextChanged
Text = txtbox.Text
End Sub
Sub TextChng() Handles MyBase.TextChanged
txtbox.Text = Text
End Sub
Sub NewTextBox()
With txtbox
.Multiline = False
.BackColor = Color.FromArgb(43, 43, 43)
.ForeColor = ForeColor
.Text = String.Empty
.TextAlign = HorizontalAlignment.Center
.BorderStyle = BorderStyle.None
.Location = New Point(7, 5)
.Font = New Font("Verdana", 10)
.Size = New Size(Width - 10, 33)
.UseSystemPasswordChar = UseSystemPasswordChar
End With
End Sub
Sub New()
MyBase.New()
NewTextBox()
Controls.Add(txtbox)
SetStyle(ControlStyles.UserPaint, True)
SetStyle(ControlStyles.SupportsTransparentBackColor, True)
Text = ""
BackColor = Color.White
ForeColor = Color.Gray
Font = New Font("Verdana", 10)
Size = New Size(135, 33)
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)
G.SmoothingMode = SmoothingMode.HighQuality
Height = 33
With txtbox
.Width = Width - 10
.TextAlign = TextAlignment
.UseSystemPasswordChar = UseSystemPasswordChar
.Height = 33
End With
G.Clear(Color.Transparent)
G.DrawRectangle(New Pen(New SolidBrush(Color.FromArgb(216, 216, 216))), New Rectangle(0, 0, Width - 1, Height - 1))
e.Graphics.DrawImage(B.Clone(), 0, 0)
G.Dispose() : B.Dispose()
End Sub
End Class
Class AVTabControl
Inherits Windows.Forms.TabControl
Private _DrawBottomBorder As Boolean
Public Property DrawBottomBorder() As Boolean
Get
Return _DrawBottomBorder
End Get
Set(ByVal value As Boolean)
_DrawBottomBorder = value
Invalidate()
End Set
End Property
Private _BorderColor As Pen = Pens.Black
Public Property BorderColor() As Color
Get
Return _BorderColor.Color
End Get
Set(ByVal value As Color)
_BorderColor = New Pen(value)
Invalidate()
End Set
End Property
Private _TextAlignment As StringAlignment = StringAlignment.Near
Public Property TextAlignment() As StringAlignment
Get
Return _TextAlignment
End Get
Set(ByVal value As StringAlignment)
_TextAlignment = value
Invalidate()
End Set
End Property
Sub New()
SetStyle(DirectCast(139286, ControlStyles), True)
SizeMode = TabSizeMode.Fixed
Alignment = TabAlignment.Left
ItemSize = New Size(50, 50)
Font = New Font("Segoe UI", 9, FontStyle.Regular, GraphicsUnit.Point)
DrawMode = TabDrawMode.OwnerDrawFixed
P1 = New Pen(Color.FromArgb(94, 94, 94))
P2 = New Pen(Color.FromArgb(17, 17, 17))
B1 = New SolidBrush(Color.FromArgb(38, 38, 38))
B2 = New SolidBrush(Color.FromArgb(35, 35, 35))
B3 = New SolidBrush(Color.FromArgb(5, Color.White))
SF1 = New StringFormat()
SF1.LineAlignment = StringAlignment.Center
For Each pg As TabPage In Me.TabPages
pg.BackColor = Color.FromArgb(242, 242, 242)
Next
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(242, 242, 242)
End If
MyBase.OnControlAdded(e)
End Sub
Private R1, R2 As Rectangle
Private P1, P2 As Pen
Private B1, B2, B3 As SolidBrush
Private GB1 As LinearGradientBrush
Private GB2 As LinearGradientBrush
Private TP1 As TabPage
Private SF1 As StringFormat
Private ItemHeight As Integer
Dim S1 As Size
Dim REC As New Rectangle
Dim BR1 As LinearGradientBrush
Private G As Graphics
Protected Overrides Sub OnPaint(ByVal e As PaintEventArgs)
Dim F1 As New System.Drawing.Font("Segoe UI", 9, FontStyle.Bold, GraphicsUnit.Point)
G = e.Graphics
G.TextRenderingHint = TextRenderingHint.ClearTypeGridFit
G.SmoothingMode = SmoothingMode.AntiAlias
G.Clear(Color.FromArgb(242, 242, 242))
ItemHeight = ItemSize.Height + 2
G.FillRectangle(B1, 0, 0, ItemHeight, Height)
G.DrawRectangle(Pens.Black, 0, 0, ItemHeight, Height)
Dim B5 As New SolidBrush(Color.FromArgb(51, 51, 51))
Dim P5 As New Pen(B5)
For I As Integer = 0 To TabCount - 1
R1 = GetTabRect(I)
R1.Y -= 1
R1.Width += 1
R1.X -= 1
TP1 = TabPages(I)
If SelectedIndex = I Then
Using GB1 As New LinearGradientBrush(R1, Color.FromArgb(26, 26, 26), Color.FromArgb(17, 17, 17), 90.0F)
Dim ColorBlend As New ColorBlend()
ColorBlend.Colors = {Color.FromArgb(25, 25, 25), Color.FromArgb(17, 17, 17), Color.FromArgb(25, 25, 25)}
ColorBlend.Positions = {0.0F, 0.5F, 1.0F}
GB1.InterpolationColors = ColorBlend
G.FillRectangle(GB1, R1)
End Using
G.DrawLine(P5, R1.Left, R1.Y - 1, R1.Width + 1, R1.Y - 1)
If HoverIndex = I Then
G.FillRectangle(B3, R1)
End If
R1.X += 5
R1.Width -= 14
R2 = R1
R2.Y += 1
R2.X += 1
SF1.Alignment = _TextAlignment
G.DrawString(TP1.Text, Font, Brushes.White, New Rectangle(R2.Left + 33, R2.Top - 1, R2.Width - 43, R2.Height), SF1)
Try
G.DrawImage(Me.ImageList.Images.Item(TabPages(I).ImageIndex), R1.X + 1, R1.Y + 11, 32, 32)
Catch
End Try
Else
Dim BR2 As New SolidBrush(Color.FromArgb(38, 38, 38))
R1.Y -= 1
G.FillRectangle(BR2, R1)
G.DrawLine(P5, R1.X, R1.Y, R1.Right, R1.Y)
If HoverIndex = I Then
G.FillRectangle(B3, R1)
End If
Dim BR As New SolidBrush(Color.FromArgb(140, Color.Black))
G.DrawLine(P2, R1.X, R1.Bottom - 1, R1.Right, R1.Bottom - 1)
R1.X += 5
R1.Width -= 14
R2 = R1
R2.Y += 1
R2.X += 1
SF1.Alignment = _TextAlignment
G.DrawString(TP1.Text, Font, Brushes.Gray, New Rectangle(R2.Left + 33, R2.Top - 1, R2.Width - 43, R2.Height), SF1)
Try
G.DrawImage(Me.ImageList.Images.Item(TabPages(I).ImageIndex), R1.X + 2, R1.Y + 11, 32, 32)
Catch
End Try
End If
G.DrawLine(P5, R1.Right + 8, R1.Top, R1.Right + 8, R1.Bottom - 3)
Next
G.DrawLine(Pens.Black, 0, 0, R2.Height - 9, 0)
G.DrawLine(_BorderColor, ItemHeight, 0, ItemHeight, Height)
G.DrawLine(P5, R1.Left - 5, ItemSize.Width * (TabCount), R1.Right + 8, ItemSize.Width * (TabCount))
If _DrawBottomBorder Then
G.DrawLine(_BorderColor, 0, Height - 1, Width, Height - 1)
End If
G.DrawLine(P5, R1.Left - 5, ((TabCount) * (R1.Width + 12)) + (TabCount * 2), R1.Left - 5, 1)
End Sub
Private HoverIndex As Integer = -1
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
End Class
Public Class AVProgressBar
Inherits Control
Private _Value As Integer = 50
Private _Thickness As Integer = 5
Private _Angle As Integer = 0
Private _Symbol As String = "%"
Sub New()
Size = New Size(65, 65)
Invalidate()
End Sub
Public Property Angle() As Integer
Get
Return _Angle
End Get
Set(ByVal v As Integer)
_Angle = v : Invalidate()
End Set
End Property
Public Property Symbol() As String
Get
Return _Symbol
End Get
Set(ByVal v As String)
_Symbol = v : Invalidate()
End Set
End Property
Public Property Thickness() As Integer
Get
Return _Thickness
End Get
Set(ByVal v As Integer)
_Thickness = v : Invalidate()
End Set
End Property
Protected Overrides Sub OnPaintBackground(ByVal p As PaintEventArgs)
End Sub
Protected Overrides Sub OnPaint(ByVal e As PaintEventArgs)
MyBase.OnPaint(e)
Me.Width = Me.Height
Using B1 As New Bitmap(Width, Height)
Using G As Graphics = Graphics.FromImage(B1)
G.SmoothingMode = SmoothingMode.AntiAlias
G.Clear(BackColor)
Using LGB As New LinearGradientBrush(ClientRectangle, Color.FromArgb(217, 217, 217), Color.FromArgb(217, 217, 217), LinearGradientMode.Vertical)
Using P1 As New Pen(LGB, Thickness + 3)
G.DrawArc(P1, CInt(Thickness / 2) + 2, CInt(Thickness / 2) + 2, Width - Thickness - 4, Height - Thickness - 4, -90, 360)
End Using
End Using
Using LGB As New LinearGradientBrush(ClientRectangle, Color.FromArgb(0, 166, 208), Color.FromArgb(0, 166, 208), LinearGradientMode.Vertical)
Using P1 As New Pen(LGB, Thickness + 3)
G.DrawArc(P1, CInt(Thickness / 2) + 9, CInt(Thickness / 2) + 9, Width - Thickness - 18, Height - Thickness - 18, -90, 360)
End Using
End Using
Using LGB As New LinearGradientBrush(ClientRectangle, Color.FromArgb(255, 255, 255), Color.FromArgb(255, 255, 255), LinearGradientMode.Vertical)
Using P1 As New Pen(LGB, Thickness - 2)
Dim i As Integer = 360 / 100 * _Value
G.DrawArc(P1, CInt(Thickness / 2) + 9, CInt(Thickness / 2) + 9, Width - Thickness - 18, Height - Thickness - 18, -90, i)
End Using
End Using
G.DrawString(_Value & _Symbol, New Font("Arial", 13), Brushes.Black, New Point(Me.Width / 2 - G.MeasureString(_Value & _Symbol, New Font("Arial", 13)).Width / 2 + 1, Me.Height / 2 - G.MeasureString(_Value & "%", New Font("Arial", 13)).Height / 2 + 1))
End Using
e.Graphics.DrawImage(B1, 0, 0)
End Using
End Sub
End Class
Public Class AVLabel : Inherits Control
Sub New()
Me.Size = New Size(175, 25)
End Sub
Private _String1 As String = "Quick Scan"
Private _String2 As String = "/ Scan running..."
Private _Img As Image
Public Property String1() As String
Get
Return _String1
End Get
Set(v As String)
_String1 = v : Invalidate()
End Set
End Property
Public Property String2() As String
Get
Return _String2
End Get
Set(v As String)
_String2 = v : Invalidate()
End Set
End Property
Public Property Image As Image
Get
Return _Img
End Get
Set(v As Image)
_Img = v : Invalidate()
End Set
End Property
Protected Overrides Sub OnPaint(e As System.Windows.Forms.PaintEventArgs)
MyBase.OnPaint(e)
Dim G As Graphics
G = e.Graphics
G.TextRenderingHint = Drawing.Text.TextRenderingHint.AntiAlias
G.DrawString(_String1, New Font("Segoe UI", 9, FontStyle.Bold), Brushes.DimGray, 32, 6)
G.DrawString(_String2, New Font("Segoe UI", 9), Brushes.DimGray, 33 + G.MeasureString(_String1, New Font("Segoe UI", 9, FontStyle.Bold)).Width, 6)
If Not _Img Is Nothing Then
G.DrawImage(_Img, 0, 0)
End If
End Sub
End Class
Public Class AVComboBox
Inherits ComboBox
Private _StartIndex As Integer = 0
Private C1 As Color = Color.FromArgb(254, 254, 254)
Private C2 As Color = Color.FromArgb(244, 244, 244)
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()
Try
If (e.State And DrawItemState.Selected) = DrawItemState.Selected Then
e.Graphics.FillRectangle(New SolidBrush(Color.LightGray), e.Bounds)
Using b As New SolidBrush(e.ForeColor)
e.Graphics.DrawString(MyBase.GetItemText(MyBase.Items(e.Index)), New Font("Verdana", 10), b, 1, e.Bounds.Top + 5)
End Using
Else
e.Graphics.DrawString(MyBase.GetItemText(MyBase.Items(e.Index)), New Font("Verdana", 10), Brushes.Gray, 1, e.Bounds.Top + 5)
End If
Catch
End Try
e.DrawFocusRectangle()
Me.Invalidate()
End Sub
Protected Sub DrawTriangle(ByVal Clr As Color, ByVal FirstPoint As Point, ByVal SecondPoint As Point, ByVal ThirdPoint As Point, ByVal G As Graphics)
Dim points As New List(Of Point)()
points.Add(FirstPoint)
points.Add(SecondPoint)
points.Add(ThirdPoint)
G.FillPolygon(New SolidBrush(Clr), points.ToArray)
End Sub
Sub New()
Me.Width = 163
Me.Font = New Font("Verdana", 15)
Me.SetStyle(ControlStyles.AllPaintingInWmPaint Or _
ControlStyles.ResizeRedraw Or _
ControlStyles.UserPaint Or _
ControlStyles.DoubleBuffer, True)
Me.DrawMode = Windows.Forms.DrawMode.OwnerDrawFixed
Me.BackColor = C1
Me.ForeColor = C1
Me.DropDownStyle = ComboBoxStyle.DropDownList
Me.DoubleBuffered = True
End Sub
Protected Overrides Sub OnTextChanged(e As System.EventArgs)
MyBase.OnTextChanged(e)
Invalidate()
End Sub
Protected Overrides Sub OnMouseDown(ByVal e As MouseEventArgs)
C2 = Color.FromArgb(233, 233, 233)
MyBase.Invalidate()
MyBase.OnMouseClick(e)
End Sub
Protected Overrides Sub OnMouseUp(e As System.Windows.Forms.MouseEventArgs)
C2 = Color.FromArgb(244, 244, 244)
MyBase.Invalidate()
MyBase.OnMouseUp(e)
End Sub
Protected Overrides Sub OnPaint(ByVal e As PaintEventArgs)
MyBase.OnPaint(e)
Dim G As Graphics
G = e.Graphics
G.FillRectangle(New SolidBrush(Color.FromArgb(C2.ToArgb)), New Rectangle(Width - 20, 2, 17, Height - 5))
G.SmoothingMode = SmoothingMode.HighQuality
Try
G.DrawRectangle(New Pen(New SolidBrush(Color.FromArgb(216, 216, 216))), New Rectangle(Width - 20, 2, 17, Height - 5))
Try
G.DrawString(Text, New Font("Verdana", 10), Brushes.Gray, New Rectangle(3, 0, Width - 20, Height), New StringFormat With {.LineAlignment = StringAlignment.Center, .Alignment = StringAlignment.Near})
Catch : End Try
G.DrawLine(New Pen(New SolidBrush(Color.FromArgb(216, 216, 216))), 0, 0, 0, 0)
G.DrawRectangle(New Pen(New SolidBrush(Color.FromArgb(216, 216, 216))), New Rectangle(0, 0, Width - 1, Height - 1))
DrawTriangle(Color.FromArgb(216, 216, 216), New Point(Width - 15, 14), New Point(Width - 8, 14), New Point(Width - 12, 17), G)
Catch
End Try
End Sub
End Class
Public Class AVButton
Inherits Control
Private Hover As Color
Private _MainColor As String
Private Loaded As Boolean
Sub New()
Me.Size = New Size(33, 33)
Me.DoubleBuffered = True
SetStyle(ControlStyles.SupportsTransparentBackColor, True)
Me.BackColor = Color.Transparent
End Sub
<TypeConverter(GetType(btnColorProperty)), Category("Misc"), Description("Select color from the list")>
Public Property MainColor() As String
Get
Return _MainColor
End Get
Set(value As String)
_MainColor = value
End Set
End Property
Protected Overrides Sub OnMouseEnter(ByVal e As EventArgs)
Hover = Color.FromArgb(228, 228, 228)
If _MainColor = "Light" Then
Hover = Color.FromArgb(228, 228, 228)
Else
Hover = Color.FromArgb(117, 117, 117)
End If
MyBase.Invalidate()
MyBase.OnMouseEnter(e)
End Sub
Protected Overrides Sub OnMouseLeave(ByVal e As EventArgs)
Hover = Color.FromArgb(242, 242, 242)
If _MainColor = "Light" Then
Hover = Color.FromArgb(242, 242, 242)
Else
Hover = Color.DimGray
End If
MyBase.Invalidate()
MyBase.OnMouseEnter(e)
End Sub
Protected Overrides Sub OnMouseUp(ByVal e As MouseEventArgs)
If _MainColor = "Light" Then
Hover = Color.FromArgb(228, 228, 228)
Else
Hover = Color.FromArgb(117, 117, 117)
End If
MyBase.Invalidate()
MyBase.OnMouseUp(e)
End Sub
Protected Overrides Sub OnMouseDown(ByVal e As MouseEventArgs)
If _MainColor = "Light" Then
Hover = Color.FromArgb(151, 151, 151)
Else
Hover = Color.FromArgb(66, 66, 66)
End If
MyBase.Invalidate()
MyBase.OnMouseClick(e)
End Sub
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
Protected Overrides Sub OnPaint(e As System.Windows.Forms.PaintEventArgs)
MyBase.OnPaint(e)
Dim G As Graphics
G = e.Graphics
If Loaded = False Then
If MainColor = "Light" Then
Hover = Color.FromArgb(242, 242, 242)
Else
Hover = Color.DimGray
End If
Loaded = True
End If
G.SmoothingMode = SmoothingMode.HighQuality
If MainColor = "Light" Then
G.FillPath(New SolidBrush(Color.FromArgb(Hover.ToArgb)), RoundRect(New Rectangle(0, 0, Width - 1, Height - 1), 5))
Else
G.FillPath(New SolidBrush(Color.FromArgb(Hover.ToArgb)), RoundRect(New Rectangle(0, 0, Width - 1, Height - 1), 5))
End If
G.DrawString(Text, New Font("Verdana", 10), Brushes.Black, Me.Width / 2 - G.MeasureString(Text, New Font("Verdana", 10)).Width / 2, Me.Height / 2 - G.MeasureString(Text, New Font("Verdana", 10)).Height / 2)
G.SmoothingMode = SmoothingMode.None
End Sub
End Class
Public Class btnColorProperty
Inherits System.ComponentModel.StringConverter
Public Overrides Function GetStandardValues(context As System.ComponentModel.ITypeDescriptorContext) As System.ComponentModel.TypeConverter.StandardValuesCollection
Return New StandardValuesCollection(myList)
End Function
Public Overrides Function GetStandardValuesSupported(context As System.ComponentModel.ITypeDescriptorContext) As Boolean
Return True
End Function
Public Overrides Function GetStandardValuesExclusive(context As System.ComponentModel.ITypeDescriptorContext) As Boolean
Return True
End Function
Private Function myList() As Collections.IList
Dim imgList As New Collection
With imgList
.Add("Light")
.Add("Dark")
End With
Return imgList
End Function
End Class