LordPankake

[VB.net] NEF Theme - [9 Controls | Dark]

Sep 21st, 2014
860
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. Imports System.Drawing.Drawing2D
  2. '|===========================================================|
  3. '|===|  NEFantasy
  4. '| Creator: LordPankake
  5. '| HF Account: http://www.hackforums.net/member.php?action=profile&uid=1828119
  6. '| Created: 9/20/2014, Last edited: 9/24/2014
  7. '|===========================================================|
  8. #Region "Base Classes"
  9. Public Class ThemedControl : Inherits Control
  10.     Public D As New DrawUtils
  11.     Public State As MouseState = MouseState.None
  12.     Public Pal As Palette
  13.     Protected Overrides Sub OnPaintBackground(ByVal e As System.Windows.Forms.PaintEventArgs)
  14.     End Sub
  15.     Protected Overrides Sub OnMouseEnter(ByVal e As EventArgs)
  16.         MyBase.OnMouseEnter(e)
  17.         State = MouseState.Over
  18.         Invalidate()
  19.     End Sub
  20.     Protected Overrides Sub OnMouseDown(ByVal e As System.Windows.Forms.MouseEventArgs)
  21.         MyBase.OnMouseDown(e)
  22.         State = MouseState.Down
  23.         Invalidate()
  24.     End Sub
  25.     Protected Overrides Sub OnMouseLeave(ByVal e As EventArgs)
  26.         MyBase.OnMouseLeave(e)
  27.         State = MouseState.None
  28.         Invalidate()
  29.     End Sub
  30.     Protected Overrides Sub OnMouseUp(ByVal e As System.Windows.Forms.MouseEventArgs)
  31.         MyBase.OnMouseUp(e)
  32.         State = MouseState.Over
  33.         Invalidate()
  34.     End Sub
  35.     Protected Overrides Sub OnTextChanged(ByVal e As System.EventArgs)
  36.         MyBase.OnTextChanged(e)
  37.         Invalidate()
  38.     End Sub
  39.     Sub New()
  40.         MyBase.New()
  41.         MinimumSize = New Size(20, 20)
  42.         ForeColor = Color.FromArgb(146, 149, 152)
  43.         Font = New Font("Segoe UI", 10.0F)
  44.         DoubleBuffered = True
  45.         Pal = New Palette
  46.         Pal.ColHighest = Color.FromArgb(100, 110, 120)
  47.         Pal.ColHigh = Color.FromArgb(65, 70, 75)
  48.         Pal.ColMed = Color.FromArgb(40, 42, 45)
  49.         Pal.ColDim = Color.FromArgb(30, 32, 35)
  50.         Pal.ColDark = Color.FromArgb(15, 17, 19)
  51.         BackColor = Pal.ColDim
  52.     End Sub
  53. End Class
  54. Public Class ThemedTextbox : Inherits TextBox
  55.     Public D As New DrawUtils
  56.     Public State As MouseState = MouseState.None
  57.     Public Pal As Palette
  58.     Protected Overrides Sub OnPaintBackground(ByVal e As System.Windows.Forms.PaintEventArgs)
  59.     End Sub
  60.     Protected Overrides Sub OnMouseEnter(ByVal e As EventArgs)
  61.         MyBase.OnMouseEnter(e)
  62.         State = MouseState.Over
  63.         Invalidate()
  64.     End Sub
  65.     Protected Overrides Sub OnMouseDown(ByVal e As System.Windows.Forms.MouseEventArgs)
  66.         MyBase.OnMouseDown(e)
  67.         State = MouseState.Down
  68.         Invalidate()
  69.     End Sub
  70.     Protected Overrides Sub OnMouseLeave(ByVal e As EventArgs)
  71.         MyBase.OnMouseLeave(e)
  72.         State = MouseState.None
  73.         Invalidate()
  74.     End Sub
  75.     Protected Overrides Sub OnMouseUp(ByVal e As System.Windows.Forms.MouseEventArgs)
  76.         MyBase.OnMouseUp(e)
  77.         State = MouseState.Over
  78.         Invalidate()
  79.     End Sub
  80.     Protected Overrides Sub OnTextChanged(ByVal e As System.EventArgs)
  81.         MyBase.OnTextChanged(e)
  82.         Invalidate()
  83.     End Sub
  84.     Sub New()
  85.         MyBase.New()
  86.         MinimumSize = New Size(20, 20)
  87.         ForeColor = Color.FromArgb(146, 149, 152)
  88.         Font = New Font("Segoe UI", 10.0F)
  89.         DoubleBuffered = True
  90.         Pal = New Palette
  91.         Pal.ColHighest = Color.FromArgb(100, 110, 120)
  92.         Pal.ColHigh = Color.FromArgb(65, 70, 75)
  93.         Pal.ColMed = Color.FromArgb(40, 42, 45)
  94.         Pal.ColDim = Color.FromArgb(30, 32, 35)
  95.         Pal.ColDark = Color.FromArgb(15, 17, 19)
  96.         BackColor = Pal.ColDim
  97.     End Sub
  98. End Class
  99. Public Class ThemedContainer : Inherits ContainerControl
  100.     Public D As New DrawUtils
  101.     Public Property Sizable As Boolean = True
  102.     Protected Drag As Boolean = True
  103.     Public State As MouseState = MouseState.None
  104.     Protected TopCap As Boolean = False
  105.     Protected SizeCap As Boolean = False
  106.     Public Pal As Palette
  107.     Protected MouseP As Point = New Point(0, 0)
  108.     Protected TopGrip As Integer
  109.     Protected Overrides Sub OnPaintBackground(ByVal e As System.Windows.Forms.PaintEventArgs)
  110.     End Sub
  111.     Protected Overrides Sub OnMouseEnter(ByVal e As EventArgs)
  112.         MyBase.OnMouseEnter(e)
  113.         State = MouseState.Over
  114.         Invalidate()
  115.     End Sub
  116.     Protected Overrides Sub OnMouseDown(ByVal e As System.Windows.Forms.MouseEventArgs)
  117.         MyBase.OnMouseDown(e)
  118.         State = MouseState.Down
  119.         If e.Button = Windows.Forms.MouseButtons.Left Then
  120.             If New Rectangle(0, 0, Width, TopGrip).Contains(e.Location) Then
  121.                 TopCap = True : MouseP = e.Location
  122.             ElseIf Drag And New Rectangle(Width - 15, Height - 15, 15, 15).Contains(e.Location) Then
  123.                 SizeCap = True : MouseP = e.Location
  124.             End If
  125.         End If
  126.     End Sub
  127.     Protected Overrides Sub OnMouseLeave(ByVal e As EventArgs)
  128.         MyBase.OnMouseLeave(e)
  129.         State = MouseState.None
  130.         Invalidate()
  131.     End Sub
  132.     Protected Overrides Sub OnMouseUp(ByVal e As System.Windows.Forms.MouseEventArgs)
  133.         MyBase.OnMouseUp(e)
  134.         State = MouseState.Over
  135.         TopCap = False
  136.         If Drag Then
  137.             SizeCap = False
  138.         End If
  139.  
  140.     End Sub
  141.     Protected Overrides Sub OnMouseMove(ByVal e As System.Windows.Forms.MouseEventArgs)
  142.         MyBase.OnMouseMove(e)
  143.  
  144.         If TopCap Then
  145.             Parent.Location = MousePosition - MouseP
  146.         End If
  147.         If Sizable And Drag And SizeCap Then
  148.             MouseP = e.Location
  149.             Parent.Size = New Size(MouseP)
  150.             Invalidate()
  151.         End If
  152.  
  153.     End Sub
  154.     Protected Overrides Sub OnTextChanged(ByVal e As System.EventArgs)
  155.         MyBase.OnTextChanged(e)
  156.         Invalidate()
  157.     End Sub
  158.     Sub New()
  159.         MyBase.New()
  160.         MinimumSize = New Size(20, 20)
  161.         ForeColor = Color.FromArgb(146, 149, 152)
  162.         Font = New Font("Trebuchet MS", 10.0F)
  163.         DoubleBuffered = True
  164.         Pal = New Palette
  165.         Pal.ColHighest = Color.FromArgb(100, 110, 120)
  166.         Pal.ColHigh = Color.FromArgb(65, 70, 75)
  167.         Pal.ColMed = Color.FromArgb(40, 42, 45)
  168.         Pal.ColDim = Color.FromArgb(30, 32, 35)
  169.         Pal.ColDark = Color.FromArgb(5, 8, 10)
  170.         BackColor = Pal.ColDim
  171.     End Sub
  172. End Class
  173. Public Class ThemedTabControl : Inherits TabControl
  174.     Public D As New DrawUtils
  175.     Public State As MouseState = MouseState.None
  176.     Public Pal As Palette
  177.     Protected Overrides Sub OnPaintBackground(ByVal e As System.Windows.Forms.PaintEventArgs)
  178.     End Sub
  179.     Protected Overrides Sub OnMouseEnter(ByVal e As EventArgs)
  180.         MyBase.OnMouseEnter(e)
  181.         State = MouseState.Over
  182.         Invalidate()
  183.     End Sub
  184.     Protected Overrides Sub OnMouseDown(ByVal e As System.Windows.Forms.MouseEventArgs)
  185.         MyBase.OnMouseDown(e)
  186.         State = MouseState.Down
  187.         Invalidate()
  188.     End Sub
  189.     Protected Overrides Sub OnMouseLeave(ByVal e As EventArgs)
  190.         MyBase.OnMouseLeave(e)
  191.         State = MouseState.None
  192.         Invalidate()
  193.     End Sub
  194.     Protected Overrides Sub OnMouseUp(ByVal e As System.Windows.Forms.MouseEventArgs)
  195.         MyBase.OnMouseUp(e)
  196.         State = MouseState.Over
  197.         Invalidate()
  198.     End Sub
  199.     Protected Overrides Sub OnTextChanged(ByVal e As System.EventArgs)
  200.         MyBase.OnTextChanged(e)
  201.         Invalidate()
  202.     End Sub
  203.     Sub New()
  204.         MyBase.New()
  205.         MinimumSize = New Size(20, 20)
  206.         ForeColor = Color.FromArgb(146, 149, 152)
  207.         Font = New Font("Segoe UI", 10.0F)
  208.         DoubleBuffered = True
  209.         Pal = New Palette
  210.         Pal.ColHighest = Color.FromArgb(100, 110, 120)
  211.         Pal.ColHigh = Color.FromArgb(65, 70, 75)
  212.         Pal.ColMed = Color.FromArgb(40, 42, 45)
  213.         Pal.ColDim = Color.FromArgb(30, 32, 35)
  214.         Pal.ColDark = Color.FromArgb(15, 17, 19)
  215.         BackColor = Pal.ColDim
  216.         Alignment = TabAlignment.Top
  217.         SetStyle(ControlStyles.AllPaintingInWmPaint Or ControlStyles.ResizeRedraw Or ControlStyles.UserPaint Or ControlStyles.DoubleBuffer, True)
  218.     End Sub
  219. End Class
  220. Public Class ThemedListControl : Inherits listbox
  221.     Public D As New DrawUtils
  222.     Public State As MouseState = MouseState.None
  223.     Public Pal As Palette
  224.     Protected Overrides Sub OnPaintBackground(ByVal e As System.Windows.Forms.PaintEventArgs)
  225.     End Sub
  226.     Protected Overrides Sub OnMouseEnter(ByVal e As EventArgs)
  227.         MyBase.OnMouseEnter(e)
  228.         State = MouseState.Over
  229.         Invalidate()
  230.     End Sub
  231.     Protected Overrides Sub OnMouseDown(ByVal e As System.Windows.Forms.MouseEventArgs)
  232.         MyBase.OnMouseDown(e)
  233.         State = MouseState.Down
  234.         Invalidate()
  235.     End Sub
  236.     Protected Overrides Sub OnMouseLeave(ByVal e As EventArgs)
  237.         MyBase.OnMouseLeave(e)
  238.         State = MouseState.None
  239.         Invalidate()
  240.     End Sub
  241.     Protected Overrides Sub OnMouseUp(ByVal e As System.Windows.Forms.MouseEventArgs)
  242.         MyBase.OnMouseUp(e)
  243.         State = MouseState.Over
  244.         Invalidate()
  245.     End Sub
  246.     Protected Overrides Sub OnTextChanged(ByVal e As System.EventArgs)
  247.         MyBase.OnTextChanged(e)
  248.         Invalidate()
  249.     End Sub
  250.     Sub New()
  251.         MyBase.New()
  252.         MinimumSize = New Size(20, 20)
  253.         ForeColor = Color.FromArgb(146, 149, 152)
  254.         Font = New Font("Segoe UI", 10.0F)
  255.         DoubleBuffered = True
  256.         Pal = New Palette
  257.         Pal.ColHighest = Color.FromArgb(100, 110, 120)
  258.         Pal.ColHigh = Color.FromArgb(65, 70, 75)
  259.         Pal.ColMed = Color.FromArgb(40, 42, 45)
  260.         Pal.ColDim = Color.FromArgb(30, 32, 35)
  261.         Pal.ColDark = Color.FromArgb(15, 17, 19)
  262.         BackColor = Pal.ColDim
  263.     End Sub
  264. End Class
  265. #End Region
  266.  
  267. #Region "Theme"
  268. Public Class NEFForm : Inherits ThemedContainer
  269.     Public Property TextAlignment As HorizontalAlignment = HorizontalAlignment.Center
  270.     Public Property TopSize As Integer = 57
  271.     Public Property TextYOffset As Integer = 0
  272.     Sub New()
  273.         MyBase.New()
  274.         MinimumSize = New Size(305, 150)
  275.         Dock = DockStyle.Fill
  276.         TopGrip = 57
  277.         TopSize = TopGrip
  278.         Font = New Font("Segoe UI", 10.0F)
  279.         BackColor = Color.FromArgb(21, 23, 25)
  280.         ForeColor = Color.FromArgb(160, Color.White)
  281.     End Sub
  282.     Protected Overrides Sub OnPaint(ByVal e As System.Windows.Forms.PaintEventArgs)
  283.         Dim G As Graphics = e.Graphics
  284.         MyBase.OnPaint(e)
  285.         Try
  286.             Me.ParentForm.TransparencyKey = Color.Fuchsia
  287.             Me.ParentForm.MinimumSize = MinimumSize
  288.             If Not Me.ParentForm.FormBorderStyle = FormBorderStyle.None Then
  289.                 Me.ParentForm.FormBorderStyle = FormBorderStyle.None
  290.             End If
  291.         Catch ex As Exception : End Try
  292.         G.Clear(Me.ParentForm.TransparencyKey)
  293.  
  294.         '| Drawing the main rectangle base.
  295.        Dim MainRect As New Rectangle(0, 0, Width - 1, Height - 1)
  296.         Dim MainHighlightRect As New Rectangle(1, 1, Width - 3, Height - 3)
  297.         Dim BGTextureBrush As New TextureBrush(D.CodeToImage(D.BGTexture), WrapMode.TileFlipXY)
  298.         G.FillRectangle(BGTextureBrush, MainRect)
  299.         G.DrawRectangle(New Pen(Color.FromArgb(40, Pal.ColHighest)), MainHighlightRect)
  300.         G.DrawRectangle(Pens.Black, MainRect)
  301.  
  302.         '| Detail to the main rect's top grip
  303.        Dim ShineRect As New Rectangle(0, 0, Width, TopSize / 2)
  304.         G.FillRectangle(New SolidBrush(Color.FromArgb(40, Pal.ColMed)), ShineRect)
  305.         Dim SubShineLGB1 As New LinearGradientBrush(ShineRect, Color.Black, Color.Black, 0, False)
  306.         Dim SubShineLGB2 As New LinearGradientBrush(ShineRect, Color.Black, Color.Black, 0, False)
  307.         Dim Blend As New ColorBlend()
  308.         Blend.Positions = {0, 1 / 3, 2 / 3, 1} : Blend.Colors = {Color.FromArgb(50, Color.Black), Color.FromArgb(150, Color.Black), Color.FromArgb(50, Color.Black), Color.Transparent}
  309.         SubShineLGB1.InterpolationColors = Blend : SubShineLGB1.RotateTransform(45)
  310.         Blend.Colors = {Color.FromArgb(50, Pal.ColHighest), Color.FromArgb(150, Pal.ColHighest), Color.FromArgb(50, Pal.ColHighest), Color.Transparent}
  311.         SubShineLGB2.InterpolationColors = Blend : SubShineLGB2.RotateTransform(45)
  312.         '|
  313.        D.FillGradientBeam(G, Color.Transparent, Color.FromArgb(80, Pal.ColHighest), ShineRect, GradientAlignment.Vertical)
  314.         G.DrawLine(New Pen(SubShineLGB1), New Point(1, ShineRect.Height), New Point(Width - 2, ShineRect.Height))
  315.         G.DrawLine(New Pen(SubShineLGB2), New Point(1, ShineRect.Height + 1), New Point(Width - 2, ShineRect.Height + 1))
  316.  
  317.         '| Goind back through and making the rect below the detail darker
  318.        Dim DarkRect As New Rectangle(0, ShineRect.Height, Width - 1, Height - 1 - ShineRect.Height)
  319.         Dim DarkLGB As New LinearGradientBrush(DarkRect, Color.FromArgb(20, Color.Black), Color.FromArgb(100, Color.Black), 90S)
  320.         G.FillRectangle(DarkLGB, DarkRect)
  321.  
  322.         '| The title text / logo. Uncomment whichever you like. In order to change the logo, change the Base64 string down in Drawing utils.
  323.        'Dim Logo As Bitmap = D.CodeToImage(D.LogoTexture)
  324.        'G.DrawImage(Logo, New Point((Width / 2) - (Logo.Width / 1.52), 0))
  325.        D.DrawTextWithShadow(G, New Rectangle(0, 0, Width, TopSize + TextYOffset), Text, Font, TextAlignment, ForeColor, Color.Black)
  326.  
  327.         '| The inner and slightly brigher rectangle of the form
  328.        Dim InnerRect As New Rectangle(5, TopSize, Width - 11, Height - 6 - TopSize)
  329.         Dim InnerHighlightRect As New Rectangle(6, TopSize + 1, Width - 13, Height - 8 - TopSize)
  330.         G.FillRectangle(BGTextureBrush, InnerRect)
  331.         G.FillRectangle(New SolidBrush(Color.FromArgb(45, Pal.ColHigh)), InnerRect)
  332.         G.DrawRectangle(New Pen(Color.FromArgb(40, Pal.ColHighest)), InnerHighlightRect)
  333.         G.DrawRectangle(Pens.Black, InnerRect)
  334.     End Sub
  335. End Class
  336. Public Class NEFButton : Inherits ThemedControl
  337.     Public Property OverlayCol As Color = Nothing
  338.     Public Property DrawSeparator As Boolean = False
  339.     Sub New()
  340.         MyBase.New()
  341.         Font = New Font("Segoe UI", 11.0F)
  342.     End Sub
  343.     Protected Overrides Sub OnPaint(ByVal e As System.Windows.Forms.PaintEventArgs)
  344.         Dim G As Graphics = e.Graphics
  345.         MyBase.OnPaint(e)
  346.         G.Clear(Me.BackColor)
  347.  
  348.         '| Drawing the main rectangle base.
  349.        Dim MainRect As New Rectangle(0, 0, Width - 1, Height - 1)
  350.         Dim MainHighlightRect As New Rectangle(1, 1, Width - 3, Height - 3)
  351.         Dim BGTextureBrush As New TextureBrush(D.CodeToImage(D.BGTexture), WrapMode.TileFlipXY)
  352.         G.FillRectangle(BGTextureBrush, MainRect)
  353.  
  354.         If OverlayCol <> Nothing Then
  355.             G.FillRectangle(New SolidBrush(OverlayCol), MainRect)
  356.         End If
  357.  
  358.  
  359.         '| Detail to the main rect's top & bottom gradients
  360.        Dim GradientHeight = Height / 2
  361.         Dim ShineRect As New Rectangle(0, 0, Width, GradientHeight)
  362.         Dim ShineRect2 As New Rectangle(0, GradientHeight, Width, GradientHeight)
  363.         G.FillRectangle(New SolidBrush(Color.FromArgb(40, Pal.ColMed)), ShineRect)
  364.         D.FillGradientBeam(G, Color.Transparent, Color.FromArgb(60, Pal.ColHighest), ShineRect, GradientAlignment.Vertical)
  365.         D.FillGradientBeam(G, Color.Transparent, Color.FromArgb(30, Pal.ColHighest), ShineRect2, GradientAlignment.Vertical)
  366.         If DrawSeparator Then
  367.             G.DrawLine(New Pen(Color.FromArgb(50, Color.Black)), New Point(1, ShineRect.Height), New Point(Width - 2, ShineRect.Height))
  368.             G.DrawLine(New Pen(Color.FromArgb(35, Pal.ColHighest)), New Point(1, ShineRect.Height + 1), New Point(Width - 2, ShineRect.Height + 1))
  369.             G.DrawLine(New Pen(Color.FromArgb(50, Color.Black)), New Point(1, ShineRect.Height + 2), New Point(Width - 2, ShineRect.Height + 2))
  370.         End If
  371.    
  372.         '| Goind back through and making the rect below the detail darker
  373.        Dim DarkLGB As New LinearGradientBrush(MainRect, Color.FromArgb(20, Color.Black), Color.FromArgb(100, Color.Black), 90S)
  374.         G.FillRectangle(DarkLGB, MainRect)
  375.  
  376.         Select Case State
  377.             Case MouseState.Over
  378.                 G.FillRectangle(New SolidBrush(Color.FromArgb(30, Pal.ColHighest)), MainRect)
  379.             Case MouseState.Down
  380.                 G.FillRectangle(New SolidBrush(Color.FromArgb(56, Color.Black)), MainRect)
  381.         End Select
  382.  
  383.         G.DrawRectangle(New Pen(Color.FromArgb(40, Pal.ColHighest)), MainHighlightRect)
  384.         G.DrawRectangle(Pens.Black, MainRect)
  385.         D.DrawTextWithShadow(G, New Rectangle(0, 0, Width, Height), Text, Font, HorizontalAlignment.Center, Color.FromArgb(155, 155, 160), Color.Black)
  386.     End Sub
  387. End Class
  388. Public Class NEFProgressBar : Inherits ThemedControl
  389.     '| The original user who asked for the theme wanted Vibelander's prog bar.
  390.    '| So credits to UnReLaTeD for the basic progress bar design!
  391.    Private PValue As Integer = 50
  392.     Public Property Value() As Integer
  393.         Get
  394.             Return PValue
  395.         End Get
  396.         Set(ByVal value As Integer)
  397.             PValue = value
  398.             Invalidate()
  399.         End Set
  400.     End Property
  401.     Public Property Minimum As Integer = 0
  402.     Public Property Maximum As Integer = 100
  403.     Sub New()
  404.         MyBase.New()
  405.         Font = New Font("Segoe UI", 11.0F)
  406.     End Sub
  407.     Protected Overrides Sub OnPaint(ByVal e As System.Windows.Forms.PaintEventArgs)
  408.         Dim G As Graphics = e.Graphics
  409.         MyBase.OnPaint(e)
  410.         G.Clear(Me.BackColor)
  411.         Height = 24
  412.  
  413.         Dim BarRect As New Rectangle(2, 2, ValueToPercentage(PValue) * Width - 5, Height - 5)
  414.         Dim Val As Integer = ValueToPercentage(PValue) * Width - 5
  415.  
  416.         '| Drawing the main BG (because VB won't do transperency)
  417.        Dim MainRect As New Rectangle(0, 0, Width, Height)
  418.         Dim MainRectHighlight As Rectangle = New Rectangle(1, 1, Width - 3, Height - 4)
  419.         Dim MainRectBorderFill As Rectangle = New Rectangle(0, 0, Width - 1, Height - 1)
  420.         Dim MainRectBorderDraw As Rectangle = New Rectangle(0, 0, Width - 1, Height - 2)
  421.         Dim BGTextureBrush As New TextureBrush(D.CodeToImage(D.BGTexture), WrapMode.TileFlipXY)
  422.         G.FillRectangle(BGTextureBrush, MainRect)
  423.         G.FillRectangle(New SolidBrush(Color.FromArgb(45, Pal.ColHigh)), MainRect)
  424.         G.DrawRectangle(New Pen(Color.FromArgb(25, Color.WhiteSmoke)), MainRectHighlight)
  425.         G.DrawRectangle(New Pen(Color.FromArgb(200, Color.Black)), MainRectBorderDraw)
  426.         G.FillRectangle(New SolidBrush(Color.FromArgb(75, Color.Black)), MainRectBorderFill)
  427.  
  428.         '| The progress bar
  429.        Dim ProgressLGB As New LinearGradientBrush(ClientRectangle, Color.FromArgb(100, 51, 159, 231), Color.FromArgb(33, 128, 206), LinearGradientMode.Vertical)
  430.         Dim ProgressPath As Rectangle = New Rectangle(1, 1, Val + 2, Height - 4)
  431.         Dim ProgressPathSmall As Rectangle = New Rectangle(3, 3, Val, Height / 2 - 3)
  432.         If Val > 1 Then
  433.             Dim BlueTextureBrush As New TextureBrush(D.CodeToImage(D.BlueTexture), WrapMode.TileFlipXY)
  434.             G.FillRectangle(BlueTextureBrush, ProgressPath)
  435.             G.FillRectangle(ProgressLGB, ProgressPath)
  436.         End If
  437.         If Val > 1 Then
  438.             G.DrawLine(New Pen(Color.FromArgb(130, 131, 197, 241)), New Point(4, 3), New Point(Val, 3))
  439.             D.FillGradientBeam(G, Color.Transparent, Color.FromArgb(60, Color.White), New Rectangle(3, 3, Val, Height / 2 - 3), GradientAlignment.Vertical)
  440.             G.DrawRectangle(New Pen(Color.FromArgb(12, 33, 55), 1), New Rectangle(1, 1, Val + 2, Height - 4))
  441.         End If
  442.     End Sub
  443.     Private Function ValueToPercentage(val As Integer) As Single
  444.         Dim min = Minimum
  445.         Dim max = Maximum
  446.         Return (val - min) / (max - min)
  447.     End Function
  448. End Class
  449. Public Class NEFLabel : Inherits ThemedControl
  450.     Sub New()
  451.         MyBase.New()
  452.         Font = New Font("Segoe UI", 10.0F)
  453.     End Sub
  454.     Protected Overrides Sub OnPaint(ByVal e As System.Windows.Forms.PaintEventArgs)
  455.         Dim G As Graphics = e.Graphics
  456.         MyBase.OnPaint(e)
  457.         G.Clear(Me.BackColor)
  458.         Height = 20
  459.  
  460.         '| Drawing the main BG (because VB won't do transperency)
  461.        Dim MainRect As New Rectangle(0, 0, Width, Height)
  462.         Dim BGTextureBrush As New TextureBrush(D.CodeToImage(D.BGTexture), WrapMode.TileFlipXY)
  463.         G.FillRectangle(BGTextureBrush, MainRect)
  464.         G.FillRectangle(New SolidBrush(Color.FromArgb(45, Pal.ColHigh)), MainRect)
  465.         D.DrawTextWithShadow(G, New Rectangle(0, 0, Width, Height), Text, Font, HorizontalAlignment.Left, Color.FromArgb(155, 155, 160), Color.Black)
  466.     End Sub
  467. End Class
  468. Public Class NEFImage : Inherits ThemedControl
  469.     Public Property Image As Bitmap
  470.     Public Property ImageMode As ImageMode = ImageMode.Normal
  471.     Sub New()
  472.         MyBase.New()
  473.         Font = New Font("Segoe UI", 10.0F)
  474.     End Sub
  475.     Protected Overrides Sub OnPaint(ByVal e As System.Windows.Forms.PaintEventArgs)
  476.         Dim G As Graphics = e.Graphics
  477.         MyBase.OnPaint(e)
  478.         G.Clear(Me.BackColor)
  479.  
  480.         '| Drawing the main BG (because VB won't do transperency)
  481.        Dim MainRect As New Rectangle(0, 0, Width, Height)
  482.         Dim BGTextureBrush As New TextureBrush(D.CodeToImage(D.BGTexture), WrapMode.TileFlipXY)
  483.         G.FillRectangle(BGTextureBrush, MainRect)
  484.         G.FillRectangle(New SolidBrush(Color.FromArgb(45, Pal.ColHigh)), MainRect)
  485.  
  486.         '| Drawing the image
  487.        If Not IsNothing(Image) Then
  488.             If ImageMode = ImageMode.Normal Then
  489.                 G.DrawImage(Image, New Point(0, 0))
  490.             Else
  491.                 G.DrawImage(Image, New Rectangle(0, 0, Width, Height))
  492.             End If
  493.         End If
  494.     End Sub
  495. End Class
  496. Public Class NEFCheckbox : Inherits ThemedControl
  497.     Public Property Checked As Boolean
  498.     Protected Overrides Sub OnMouseDown(ByVal e As System.Windows.Forms.MouseEventArgs)
  499.         MyBase.OnMouseDown(e)
  500.         Checked = Not Checked
  501.         BackColor = Color.FromArgb(21, 23, 25)
  502.     End Sub
  503.     Sub New()
  504.         MyBase.New()
  505.         Font = New Font("Segoe UI", 10.0F)
  506.     End Sub
  507.     Protected Overrides Sub OnPaint(ByVal e As System.Windows.Forms.PaintEventArgs)
  508.         Dim G As Graphics = e.Graphics
  509.         MyBase.OnPaint(e)
  510.         G.Clear(Me.BackColor)
  511.         Height = 20
  512.  
  513.         '| Drawing the main BG (because VB won't do transperency)
  514.        Dim MainRect As New Rectangle(0, 0, Width, Height)
  515.         Dim BGTextureBrush As New TextureBrush(D.CodeToImage(D.BGTexture), WrapMode.TileFlipXY)
  516.         G.FillRectangle(BGTextureBrush, MainRect)
  517.         G.FillRectangle(New SolidBrush(Color.FromArgb(45, Pal.ColHigh)), MainRect)
  518.  
  519.         '| Stuff
  520.        Dim CheckRect As New Rectangle(0, 0, Height - 1, Height - 1)
  521.         Dim CheckRectHighlight As New Rectangle(1, 1, Height - 3, Height - 3)
  522.         Dim DarkLGB As New LinearGradientBrush(CheckRect, Color.FromArgb(20, Color.Black), Color.FromArgb(100, Color.Black), 90S)
  523.         G.FillRectangle(DarkLGB, CheckRect)
  524.         G.DrawRectangle(New Pen(Color.FromArgb(40, Pal.ColHighest)), CheckRectHighlight)
  525.         G.DrawRectangle(Pens.Black, CheckRect)
  526.  
  527.         If Checked Then
  528.             Dim CheckRectChecked As New Rectangle(3, 3, Height - 7, Height - 7)
  529.             G.FillRectangle(New SolidBrush(Color.FromArgb(100, Pal.ColHighest)), CheckRectChecked)
  530.             G.DrawRectangle(New Pen(Color.FromArgb(140, Pal.ColHighest)), CheckRectChecked)
  531.         End If
  532.  
  533.         D.DrawTextWithShadow(G, New Rectangle(Height + 2, 0, Width, Height), Text, Font, HorizontalAlignment.Left, Color.FromArgb(155, 155, 160), Color.Black)
  534.     End Sub
  535. End Class
  536. Public Class NEFRadiobutton : Inherits ThemedControl
  537.     Public Property Checked As Boolean
  538.     Protected Overrides Sub OnMouseDown(ByVal e As System.Windows.Forms.MouseEventArgs)
  539.         MyBase.OnMouseDown(e)
  540.         For Each Cont As Control In Parent.Controls
  541.             If TypeOf Cont Is NEFRadiobutton Then
  542.                 DirectCast(Cont, NEFRadiobutton).Checked = False
  543.                 Cont.Invalidate()
  544.             End If
  545.         Next
  546.         Checked = True
  547.     End Sub
  548.     Sub New()
  549.         MyBase.New()
  550.         Font = New Font("Segoe UI", 10.0F)
  551.     End Sub
  552.     Protected Overrides Sub OnPaint(ByVal e As System.Windows.Forms.PaintEventArgs)
  553.         Dim G As Graphics = e.Graphics
  554.         MyBase.OnPaint(e)
  555.         G.Clear(Me.BackColor)
  556.         Height = 20
  557.  
  558.         '| Drawing the main BG (because VB won't do transperency)
  559.        Dim MainRect As New Rectangle(0, 0, Width, Height)
  560.         Dim BGTextureBrush As New TextureBrush(D.CodeToImage(D.BGTexture), WrapMode.TileFlipXY)
  561.         G.FillRectangle(BGTextureBrush, MainRect)
  562.         G.FillRectangle(New SolidBrush(Color.FromArgb(45, Pal.ColHigh)), MainRect)
  563.  
  564.         '| Stuff
  565.        Dim CheckRect As New Rectangle(0, 0, Height - 1, Height - 1)
  566.         Dim CheckRectHighlight As New Rectangle(1, 1, Height - 3, Height - 3)
  567.         Dim DarkLGB As New LinearGradientBrush(CheckRect, Color.FromArgb(20, Color.Black), Color.FromArgb(100, Color.Black), 90S)
  568.         G.FillEllipse(DarkLGB, CheckRect)
  569.         G.SmoothingMode = SmoothingMode.HighQuality
  570.         G.DrawEllipse(New Pen(Color.FromArgb(40, Pal.ColHighest)), CheckRectHighlight)
  571.         G.DrawEllipse(Pens.Black, CheckRect)
  572.  
  573.         If Checked Then
  574.             Dim CheckRectChecked As New Rectangle(3, 3, Height - 7, Height - 7)
  575.             G.FillEllipse(New SolidBrush(Color.FromArgb(100, Pal.ColHighest)), CheckRectChecked)
  576.             G.DrawEllipse(New Pen(Color.FromArgb(140, Pal.ColHighest)), CheckRectChecked)
  577.         End If
  578.  
  579.         D.DrawTextWithShadow(G, New Rectangle(Height + 2, 0, Width, Height), Text, Font, HorizontalAlignment.Left, Color.FromArgb(155, 155, 160), Color.Black)
  580.     End Sub
  581. End Class
  582. Public Class NEFGroupbox : Inherits ThemedContainer
  583.     Public Property TextAlignment As HorizontalAlignment = HorizontalAlignment.Center
  584.  
  585.     Public Property TextYOffset As Integer = 2
  586.     Sub New()
  587.         MyBase.New()
  588.         MinimumSize = New Size(10, 10)
  589.         TopGrip = 20
  590.         Font = New Font("Segoe UI", 10.0F)
  591.         BackColor = Color.FromArgb(21, 23, 25)
  592.         ForeColor = Color.FromArgb(160, Color.White)
  593.     End Sub
  594.     Protected Overrides Sub OnPaint(ByVal e As System.Windows.Forms.PaintEventArgs)
  595.         Dim G As Graphics = e.Graphics
  596.         MyBase.OnPaint(e)
  597.         Try
  598.             Me.ParentForm.TransparencyKey = Color.Fuchsia
  599.             Me.ParentForm.MinimumSize = MinimumSize
  600.             If Not Me.ParentForm.FormBorderStyle = FormBorderStyle.None Then
  601.                 Me.ParentForm.FormBorderStyle = FormBorderStyle.None
  602.             End If
  603.         Catch ex As Exception : End Try
  604.         G.Clear(Me.ParentForm.TransparencyKey)
  605.  
  606.         '| Drawing the main rectangle base.
  607.        Dim MainRect As New Rectangle(0, 0, Width - 1, Height - 1)
  608.         Dim MainHighlightRect As New Rectangle(1, 1, Width - 3, Height - 3)
  609.         Dim BGTextureBrush As New TextureBrush(D.CodeToImage(D.BGTexture), WrapMode.TileFlipXY)
  610.  
  611.         Dim Logo As Bitmap = D.CodeToImage(D.LogoTexture)
  612.  
  613.         G.FillRectangle(BGTextureBrush, MainRect)
  614.         G.DrawRectangle(New Pen(Color.FromArgb(40, Pal.ColHighest)), MainHighlightRect)
  615.         G.DrawRectangle(Pens.Black, MainRect)
  616.  
  617.  
  618.  
  619.         '| Detail to the main rect's top grip
  620.        Dim ShineRect As New Rectangle(0, 0, Width, TopGrip)
  621.         G.FillRectangle(New SolidBrush(Color.FromArgb(40, Pal.ColMed)), ShineRect)
  622.         Dim SubShineLGB1 As New LinearGradientBrush(ShineRect, Color.Black, Color.Black, 0, False)
  623.         Dim SubShineLGB2 As New LinearGradientBrush(ShineRect, Color.Black, Color.Black, 0, False)
  624.         Dim Blend As New ColorBlend()
  625.         With Blend
  626.             .Positions = {0, 1 / 3, 2 / 3, 1} : .Colors = {Color.FromArgb(50, Color.Black), Color.FromArgb(150, Color.Black), Color.FromArgb(50, Color.Black), Color.Transparent}
  627.         End With
  628.         With SubShineLGB1
  629.             .InterpolationColors = Blend : .RotateTransform(45)
  630.         End With
  631.         With Blend
  632.             .Colors = {Color.FromArgb(50, Pal.ColHighest), Color.FromArgb(150, Pal.ColHighest), Color.FromArgb(50, Pal.ColHighest), Color.Transparent}
  633.         End With
  634.         With SubShineLGB2
  635.             .InterpolationColors = Blend : .RotateTransform(45)
  636.         End With
  637.         D.FillGradientBeam(G, Color.Transparent, Color.FromArgb(80, Pal.ColHighest), ShineRect, GradientAlignment.Vertical)
  638.         G.DrawLine(New Pen(SubShineLGB1), New Point(1, ShineRect.Height), New Point(Width - 2, ShineRect.Height))
  639.         G.DrawLine(New Pen(SubShineLGB2), New Point(1, ShineRect.Height + 1), New Point(Width - 2, ShineRect.Height + 1))
  640.  
  641.         '| Goind back through and making the rect below the detail darker
  642.        Dim DarkRect As New Rectangle(0, ShineRect.Height, Width - 1, Height - 1 - ShineRect.Height)
  643.         Dim DarkLGB As New LinearGradientBrush(DarkRect, Color.FromArgb(20, Color.Black), Color.FromArgb(100, Color.Black), 90S)
  644.         G.FillRectangle(DarkLGB, DarkRect)
  645.  
  646.         'G.DrawImage(Logo, New Point((Width / 2) - (Logo.Width / 1.52), 0))
  647.        D.DrawTextWithShadow(G, New Rectangle(0, 0, Width, TopGrip + TextYOffset), Text, Font, TextAlignment, ForeColor, Color.Black)
  648.  
  649.  
  650.         '| The inner and slightly brigher rectangle of the form
  651.        Dim InnerRect As New Rectangle(5, TopGrip, Width - 11, Height - 6 - TopGrip)
  652.         Dim InnerHighlightRect As New Rectangle(6, TopGrip + 1, Width - 13, Height - 8 - TopGrip)
  653.         G.FillRectangle(BGTextureBrush, InnerRect)
  654.         G.FillRectangle(New SolidBrush(Color.FromArgb(45, Pal.ColHigh)), InnerRect)
  655.         G.DrawRectangle(New Pen(Color.FromArgb(40, Pal.ColHighest)), InnerHighlightRect)
  656.         G.DrawRectangle(Pens.Black, InnerRect)
  657.     End Sub
  658. End Class
  659. Public Class NEFTextbox : Inherits ThemedTextbox
  660.     Sub New()
  661.         MyBase.New()
  662.         SetStyle(ControlStyles.UserPaint, True)
  663.         SetStyle(ControlStyles.OptimizedDoubleBuffer, True)
  664.  
  665.         BackColor = Pal.ColDark
  666.         BorderStyle = Windows.Forms.BorderStyle.None
  667.         Multiline = True
  668.         Font = New Font("Segoe UI", 10.0F)
  669.     End Sub
  670.     Protected Overrides Sub OnPaint(ByVal e As System.Windows.Forms.PaintEventArgs)
  671.         Dim G As Graphics = e.Graphics
  672.         MyBase.OnPaint(e)
  673.         If Not Multiline Then
  674.             Height = 21
  675.         End If
  676.         G.Clear(Me.BackColor)
  677.         Height = 20
  678.  
  679.         '| Drawing the main BG (because VB won't do transperency)
  680.        Dim MainRect As New Rectangle(0, 0, Width, Height)
  681.         Dim MainRectHighlight As Rectangle = New Rectangle(1, 1, Width - 3, Height - 4)
  682.         Dim MainRectBorderFill As Rectangle = New Rectangle(0, 0, Width - 1, Height - 1)
  683.         Dim MainRectBorderDraw As Rectangle = New Rectangle(0, 0, Width - 1, Height - 2)
  684.         Dim BGTextureBrush As New TextureBrush(D.CodeToImage(D.BGTexture), WrapMode.TileFlipXY)
  685.         G.FillRectangle(BGTextureBrush, MainRect)
  686.         G.FillRectangle(New SolidBrush(Color.FromArgb(45, Pal.ColHigh)), MainRect)
  687.         G.DrawRectangle(New Pen(Color.FromArgb(25, Color.WhiteSmoke)), MainRectHighlight)
  688.         G.DrawRectangle(New Pen(Color.FromArgb(200, Color.Black)), MainRectBorderDraw)
  689.         G.FillRectangle(New SolidBrush(Color.FromArgb(75, Color.Black)), MainRectBorderFill)
  690.  
  691.         D.DrawTextWithShadow(G, New Rectangle(2, 0, Width, Height), Text, Font, HorizontalAlignment.Left, Color.FromArgb(155, 155, 160), Color.Black)
  692.     End Sub
  693. End Class
  694. #End Region
  695.  
  696. #Region "Theme Utility Stuff"
  697. Public Class Palette
  698.     Public ColHighest As Color
  699.     Public ColHigh As Color
  700.     Public ColMed As Color
  701.     Public ColDim As Color
  702.     Public ColDark As Color
  703. End Class
  704. Public Enum ImageMode As Byte
  705.     Normal = 0
  706.     Scaled = 1
  707. End Enum
  708. Public Enum MouseState As Byte
  709.     None = 0
  710.     Over = 1
  711.     Down = 2
  712.     Block = 3
  713. End Enum
  714. Public Enum GradientAlignment As Byte
  715.     Vertical = 0
  716.     Horizontal = 1
  717. End Enum
  718. Public Class DrawUtils
  719.     Public BlueTexture As String = "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"
  720.     Public LogoTexture As String = "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"
  721.     Public BGTexture As String = "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"
  722.     Public Sub FillGradientBeam(ByVal g As Graphics, ByVal Col1 As Color, ByVal Col2 As Color, ByVal rect As Rectangle, ByVal align As GradientAlignment)
  723.         Dim stored As SmoothingMode = g.SmoothingMode
  724.         Dim Blend As New ColorBlend
  725.         g.SmoothingMode = SmoothingMode.HighQuality
  726.         Select Case align
  727.             Case GradientAlignment.Vertical
  728.                 Dim PathGradient As New LinearGradientBrush(New Point(rect.X, rect.Y), New Point(rect.X + rect.Width - 1, rect.Y), Color.Black, Color.Black)
  729.                 Blend.Positions = {0, 1 / 2, 1}
  730.                 Blend.Colors = {Col1, Col2, Col1}
  731.                 PathGradient.InterpolationColors = Blend
  732.                 g.FillRectangle(PathGradient, rect)
  733.             Case GradientAlignment.Horizontal
  734.                 Dim PathGradient As New LinearGradientBrush(New Point(rect.X, rect.Y), New Point(rect.X, rect.Y + rect.Height), Color.Black, Color.Black)
  735.                 Blend.Positions = {0, 1 / 2, 1}
  736.                 Blend.Colors = {Col1, Col2, Col1}
  737.                 PathGradient.InterpolationColors = Blend
  738.                 PathGradient.RotateTransform(0)
  739.                 g.FillRectangle(PathGradient, rect)
  740.         End Select
  741.         g.SmoothingMode = stored
  742.     End Sub
  743.     Public Sub DrawTextWithShadow(ByVal G As Graphics, ByVal ContRect As Rectangle, ByVal Text As String, ByVal TFont As Font, ByVal TAlign As HorizontalAlignment, ByVal TColor As Color, ByVal BColor As Color)
  744.         DrawText(G, New Rectangle(ContRect.X + 1, ContRect.Y + 1, ContRect.Width, ContRect.Height), Text, TFont, TAlign, BColor)
  745.         DrawText(G, ContRect, Text, TFont, TAlign, TColor)
  746.     End Sub
  747.     Public Sub FillDualGradPath(ByVal g As Graphics, ByVal Col1 As Color, ByVal Col2 As Color, ByVal rect As Rectangle, ByVal gp As GraphicsPath, ByVal align As GradientAlignment)
  748.         Dim stored As SmoothingMode = g.SmoothingMode
  749.         Dim Blend As New ColorBlend
  750.         g.SmoothingMode = SmoothingMode.HighQuality
  751.         Select Case align
  752.             Case GradientAlignment.Vertical
  753.                 Dim PathGradient As New LinearGradientBrush(New Point(rect.X, rect.Y), New Point(rect.X + rect.Width - 1, rect.Y), Color.Black, Color.Black)
  754.                 Blend.Positions = {0, 1 / 2, 1}
  755.                 Blend.Colors = {Col1, Col2, Col1}
  756.                 PathGradient.InterpolationColors = Blend
  757.                 g.FillPath(PathGradient, gp)
  758.             Case GradientAlignment.Horizontal
  759.                 Dim PathGradient As New LinearGradientBrush(New Point(rect.X, rect.Y), New Point(rect.X, rect.Y + rect.Height), Color.Black, Color.Black)
  760.                 Blend.Positions = {0, 1 / 2, 1}
  761.                 Blend.Colors = {Col1, Col2, Col1}
  762.                 PathGradient.InterpolationColors = Blend
  763.                 PathGradient.RotateTransform(0)
  764.                 g.FillPath(PathGradient, gp)
  765.         End Select
  766.         g.SmoothingMode = stored
  767.     End Sub
  768.     Public Sub DrawText(ByVal G As Graphics, ByVal ContRect As Rectangle, ByVal Text As String, ByVal TFont As Font, ByVal TAlign As HorizontalAlignment, ByVal TColor As Color)
  769.         If String.IsNullOrEmpty(Text) Then Return
  770.         Dim TextSize As Size = G.MeasureString(Text, TFont).ToSize
  771.         Dim CenteredY As Integer = ContRect.Height \ 2 - TextSize.Height \ 2
  772.         Select Case TAlign
  773.             Case HorizontalAlignment.Left
  774.                 Dim sf As New StringFormat
  775.                 sf.LineAlignment = StringAlignment.Near
  776.                 sf.Alignment = StringAlignment.Near
  777.                 G.DrawString(Text, TFont, New SolidBrush(TColor), New Rectangle(ContRect.X, ContRect.Y + ContRect.Height / 2 - TextSize.Height / 2, ContRect.Width, ContRect.Height), sf)
  778.             Case HorizontalAlignment.Right
  779.                 Dim sf As New StringFormat
  780.                 sf.LineAlignment = StringAlignment.Far
  781.                 sf.Alignment = StringAlignment.Far
  782.                 G.DrawString(Text, TFont, New SolidBrush(TColor), New Rectangle(ContRect.X, ContRect.Y, ContRect.Width, ContRect.Height / 2 + TextSize.Height / 2), sf)
  783.             Case HorizontalAlignment.Center
  784.                 Dim sf As New StringFormat
  785.                 sf.LineAlignment = StringAlignment.Center
  786.                 sf.Alignment = StringAlignment.Center
  787.                 G.DrawString(Text, TFont, New SolidBrush(TColor), ContRect, sf)
  788.         End Select
  789.     End Sub
  790.     Public Function RoundRect(ByVal Rectangle As Rectangle, ByVal Curve As Integer) As GraphicsPath
  791.         Dim Path As New GraphicsPath
  792.         Dim ArcRectangleWidth As Integer = Curve * 2
  793.         With Path
  794.             .AddArc(New Rectangle(Rectangle.X, Rectangle.Y, ArcRectangleWidth, ArcRectangleWidth), -180, 90)
  795.             .AddArc(New Rectangle(Rectangle.Width - ArcRectangleWidth + Rectangle.X, Rectangle.Y, ArcRectangleWidth, ArcRectangleWidth), -90, 90)
  796.             .AddArc(New Rectangle(Rectangle.Width - ArcRectangleWidth + Rectangle.X, Rectangle.Height - ArcRectangleWidth + Rectangle.Y, ArcRectangleWidth, ArcRectangleWidth), 0, 90)
  797.             .AddArc(New Rectangle(Rectangle.X, Rectangle.Height - ArcRectangleWidth + Rectangle.Y, ArcRectangleWidth, ArcRectangleWidth), 90, 90)
  798.             .AddLine(New Point(Rectangle.X, Rectangle.Height - ArcRectangleWidth + Rectangle.Y), New Point(Rectangle.X, Curve + Rectangle.Y))
  799.         End With
  800.         Return Path
  801.     End Function
  802.     Public Function RoundedTopRect(ByVal Rectangle As Rectangle, ByVal Curve As Integer) As GraphicsPath
  803.         Dim Path As GraphicsPath = New GraphicsPath()
  804.         Dim ArcRectangleWidth As Integer = Curve * 2
  805.         With Path
  806.             .AddArc(New Rectangle(Rectangle.X, Rectangle.Y, ArcRectangleWidth, ArcRectangleWidth), -180, 90)
  807.             .AddArc(New Rectangle(Rectangle.Width - ArcRectangleWidth + Rectangle.X, Rectangle.Y, ArcRectangleWidth, ArcRectangleWidth), -90, 90)
  808.             .AddLine(New Point(Rectangle.X + Rectangle.Width, Rectangle.Y + ArcRectangleWidth), New Point(Rectangle.X + Rectangle.Width, Rectangle.Y + Rectangle.Height))
  809.             .AddLine(New Point(Rectangle.X, Rectangle.Height + Rectangle.Y), New Point(Rectangle.X, Rectangle.Y + Curve))
  810.         End With
  811.         Return Path
  812.     End Function
  813.     Public Function CodeToImage(ByVal Code As String) As Image
  814.         Return Image.FromStream(New System.IO.MemoryStream(Convert.FromBase64String(Code)))
  815.     End Function
  816. End Class
  817. #End Region
Add Comment
Please, Sign In to add comment