Advertisement
netrosly

Lens Item.

Jul 6th, 2016
273
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
VB.NET 16.43 KB | None | 0 0
  1. Imports System.Drawing
  2. Imports System.Drawing.Drawing2D
  3. Imports System.IO
  4. Imports System.ComponentModel
  5.  
  6. Public Class Lens
  7.     Inherits Control
  8. #Region "Properties & Events"
  9.     Property idleMainColor As Color = Color.FromArgb(60, 77, 99)
  10.     Property idleOrbColor As Color = Color.FromArgb(40, 54, 73)
  11.     Property hoverMainColor As Color = Color.FromArgb(231, 178, 79)
  12.     Property selectedMainColor As Color = Color.FromArgb(217, 71, 71)
  13.     Event StatusChanged(Type As Kind)
  14.     Property Selected As Boolean = False
  15.     Event SelectedChanged(Selected As Boolean)
  16.     Property bckColor As Color = Color.FromArgb(50, 67, 91)
  17.     Property img As String = "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"
  18.     Property TextFont As Font = New Font("Arial", 11, FontStyle.Regular)
  19.     Property TextColor As Color = Color.FromArgb(255, 255, 255)
  20.     Property Slope As Integer = 24
  21.     Property Type As Kind = Kind.Idle
  22.     Enum Kind
  23.         Idle
  24.         Hover
  25.         Selected
  26.     End Enum
  27. #End Region
  28.  
  29.     Sub New()
  30.         Me.DoubleBuffered = True
  31.         Me.Size = New Size(150, 200)
  32.     End Sub
  33. #Region "Round Rectangle"
  34.     Public Shared Function NTRound(rectangle As Rectangle, slope As Integer) As GraphicsPath
  35.         Dim path = New GraphicsPath(FillMode.Winding)
  36.         path.AddArc(rectangle.X - slope, rectangle.Y, slope, slope, 180.0F, 90.0F)
  37.         path.AddArc(rectangle.Right, rectangle.Y, slope, slope, 270.0F, 90.0F)
  38.         path.AddArc(rectangle.Right - slope, rectangle.Bottom - slope, slope, slope, 0.0F, 90.0F)
  39.         path.AddArc(rectangle.X, rectangle.Bottom - slope, slope, slope, 90.0F, 90.0F)
  40.         path.CloseFigure()
  41.         Return path
  42.     End Function
  43.  
  44.     Public Shared Function NTRound(x As Integer, y As Integer, height As Integer, width As Integer, slope As Integer) As GraphicsPath
  45.         Return Round(New Rectangle(x, y, height, width), slope)
  46.     End Function
  47.  
  48.     Public Shared Function Round(rectangle As Rectangle, slope As Integer) As GraphicsPath
  49.         Dim path = New GraphicsPath(FillMode.Winding)
  50.         path.AddArc(rectangle.X, rectangle.Y, slope, slope, 180.0F, 90.0F)
  51.         path.AddArc(rectangle.Right - slope, rectangle.Y, slope, slope, 270.0F, 90.0F)
  52.         path.AddArc(rectangle.Right - slope, rectangle.Bottom - slope, slope, slope, 0.0F, 90.0F)
  53.         path.AddArc(rectangle.X, rectangle.Bottom - slope, slope, slope, 90.0F, 90.0F)
  54.         path.CloseFigure()
  55.         Return path
  56.     End Function
  57.  
  58.     Public Shared Function Round(x As Integer, y As Integer, height As Integer, width As Integer, slope As Integer) As GraphicsPath
  59.         Return Round(New Rectangle(x, y, height, width), slope)
  60.     End Function
  61. #End Region
  62.     Public Function Base64ToImage(base64String As String) As Image
  63.         Dim imageBytes As Byte() = Convert.FromBase64String(base64String)
  64.         Dim ms As New MemoryStream(imageBytes, 0, imageBytes.Length)
  65.         ms.Write(imageBytes, 0, imageBytes.Length)
  66.         Dim image__1 As Image = Image.FromStream(ms, True)
  67.         Return image__1
  68.     End Function
  69. #Region "Mouse Events"
  70.     Private Sub Lens_MouseClick(sender As Object, e As MouseEventArgs) Handles Me.MouseClick
  71.         If e.Button = Windows.Forms.MouseButtons.Left Then
  72.             If New Rectangle(0, 0, Me.Width - 1, Me.Height - 1).Contains(e.X, e.Y) Then
  73.                 Selected = Not Selected
  74.                 If Selected = True Then
  75.                     Type = Kind.Selected
  76.                 Else
  77.                     Type = Kind.Hover
  78.                 End If
  79.                 RaiseEvent SelectedChanged(Selected)
  80.                 Me.Refresh()
  81.             End If
  82.         End If
  83.     End Sub
  84.     Private Sub Lens_MouseLeave(sender As Object, e As EventArgs) Handles Me.MouseLeave
  85.         Cursor = Cursors.Arrow
  86.         If Not Type = Kind.Selected Then
  87.             Type = Kind.Idle
  88.             RaiseEvent StatusChanged(Type)
  89.             Me.Refresh()
  90.         End If
  91.     End Sub
  92.  
  93.     Private Sub Lens_MouseMove(sender As Object, e As MouseEventArgs) Handles Me.MouseMove
  94.         Cursor = Cursors.Hand
  95.         If Not Type = Kind.Selected And New Rectangle(0, 0, Me.Width - 1, Me.Height - 1).Contains(e.X, e.Y) Then
  96.             Type = Kind.Hover
  97.             RaiseEvent StatusChanged(Type)
  98.             Me.Refresh()
  99.         End If
  100.     End Sub
  101. #End Region
  102.  
  103.     Private Sub Lens_Paint(sender As Object, e As PaintEventArgs) Handles Me.Paint
  104.         Dim g As Graphics = e.Graphics
  105.         g.SmoothingMode = SmoothingMode.AntiAlias
  106.         g.FillPath(New SolidBrush(bckColor), Round(New Rectangle(0, 0, Me.Width - 1, Me.Height - 1), Slope))
  107.         If Type = Kind.Idle Then
  108.             g.FillEllipse(New SolidBrush(idleOrbColor), New Rectangle(Me.Width - 20, 12, 10, 10))
  109.             g.FillPath(New SolidBrush(idleMainColor), NTRound(New Rectangle(0, Me.Height - (Me.Height / 5), Me.Width - 1, Me.Height / 5), Slope))
  110.             g.DrawString(Text, TextFont, New SolidBrush(TextColor), New Rectangle(5, Me.Height - (Me.Height / 5), Me.Width - 6, Me.Height / 5), New StringFormat With {.Alignment = StringAlignment.Center, .LineAlignment = StringAlignment.Center})
  111.         ElseIf Type = Kind.Hover Then
  112.             g.FillEllipse(New SolidBrush(hoverMainColor), New Rectangle(Me.Width - 20, 12, 10, 10))
  113.             g.FillPath(New SolidBrush(hoverMainColor), NTRound(New Rectangle(0, Me.Height - (Me.Height / 5), Me.Width - 1, Me.Height / 5), Slope))
  114.             g.DrawString(Text, TextFont, New SolidBrush(TextColor), New Rectangle(5, Me.Height - (Me.Height / 5), Me.Width - 6, Me.Height / 5), New StringFormat With {.Alignment = StringAlignment.Center, .LineAlignment = StringAlignment.Center})
  115.         ElseIf Type = Kind.Selected Then
  116.             g.FillEllipse(New SolidBrush(selectedMainColor), New Rectangle(Me.Width - 20, 12, 10, 10))
  117.             g.DrawPath(New Pen(selectedMainColor), Round(New Rectangle(0, 0, Me.Width - 1, Me.Height - 1), Slope))
  118.             g.FillPath(New SolidBrush(selectedMainColor), NTRound(New Rectangle(0, Me.Height - (Me.Height / 5), Me.Width - 1, Me.Height / 5), Slope))
  119.             g.DrawString(Text, TextFont, New SolidBrush(TextColor), New Rectangle(5, Me.Height - (Me.Height / 5), Me.Width - 6, Me.Height / 5), New StringFormat With {.Alignment = StringAlignment.Center, .LineAlignment = StringAlignment.Center})
  120.         End If
  121.         Try : g.DrawImage(Base64ToImage(img), New Rectangle(5, Me.Height / 5, Me.Width - 11, Me.Height / 2)) : Catch ex As Exception : End Try
  122.     End Sub
  123. End Class
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement