RazerX

GalaxyBar

Oct 1st, 2013
250
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. Imports System.ComponentModel
  2. <DefaultEvent("Progress_Scroll")> Public Class GalaxyBar
  3. #Region "Variables"
  4.     Inherits System.Windows.Forms.UserControl
  5.     Private _Value As Integer = 0
  6.     Private _Maximum As Integer = 100
  7.     Private _Minimum As Integer = 0
  8.     Private _Use_Trackbar As Boolean = True
  9.     Private Mouse_Down As Boolean
  10.     Private WithEvents overlap As PictureBox
  11.     Public Event Progress_Scroll()
  12. #End Region
  13. #Region "Properties"
  14.     Public Property Minimum As Integer
  15.         Get
  16.             Return _Minimum
  17.         End Get
  18.         Set(value As Integer)
  19.             _Minimum = value
  20.  
  21.             If value > _Value Then _Value = value
  22.             If value > _Maximum Then _Maximum = value
  23.             Change_Format()
  24.         End Set
  25.     End Property
  26.     <Category("Control")>
  27.     Public Property Maximum() As Integer
  28.         Get
  29.             Return _Maximum
  30.         End Get
  31.         Set(V As Integer)
  32.             Select Case V
  33.                 Case Is < _Value
  34.                     _Value = V
  35.             End Select
  36.             _Maximum = V
  37.             Change_Format()
  38.         End Set
  39.     End Property
  40.     <Category("Control")>
  41.     Public Property Value() As Integer
  42.         Get
  43.             Select Case _Value
  44.                 Case 0
  45.                     Return 0
  46.                 Case Else
  47.                     Return _Value
  48.             End Select
  49.         End Get
  50.         Set(V As Integer)
  51.             Select Case V
  52.                 Case Is > _Maximum
  53.                     V = _Maximum
  54.             End Select
  55.             _Value = V
  56.             Change_Format()
  57.         End Set
  58.     End Property
  59.     <Category("Control")>
  60.     Public Property Use_Trackbar() As Boolean
  61.         Get
  62.             Return _Use_Trackbar
  63.         End Get
  64.  
  65.         Set(V As Boolean)
  66.             _Use_Trackbar = V
  67.         End Set
  68.     End Property
  69. #End Region
  70. #Region "Subs"
  71.     Sub Change_Format()
  72.         'This Sub Changes The Overlap Width , That Means The Progress
  73.        'I Use The Try Method To Avoid Exceptions Of Dividing With Zero... If You Find A Better Method Please Forgive Me For Not Knowing It :)
  74.        Try
  75.             overlap.Width = Math.Round((((_Value - _Minimum) / (_Maximum - _Minimum)) * Width), 0)
  76.         Catch ex As Exception
  77.  
  78.         End Try
  79.  
  80.     End Sub
  81.     Private Sub Me_SizeChanged(sender As Object, e As EventArgs) Handles MyBase.SizeChanged
  82.         Change_Format()
  83.     End Sub
  84.     'The Following Subs Makes The ProgressBar Work As An Trackbar, You Can Change This  At The Property Window
  85.    Private Sub _MouseMove(sender As Object, e As MouseEventArgs) Handles Me.MouseMove, overlap.MouseMove
  86.         If e.Button = Windows.Forms.MouseButtons.Left Then
  87.             If _Use_Trackbar = True AndAlso Mouse_Down = True AndAlso e.X > -1 AndAlso e.X < (Width + 1) Then
  88.                 _Value = _Minimum + CInt((_Maximum - _Minimum) * (e.X / Width))
  89.                 Change_Format()
  90.                 RaiseEvent Progress_Scroll()
  91.             End If
  92.         End If
  93.     End Sub
  94.     Private Sub _MouseDown(sender As Object, e As MouseEventArgs) Handles overlap.MouseDown, Me.MouseDown
  95.  
  96.         Mouse_Down = True
  97.         If _Use_Trackbar = True AndAlso Mouse_Down = True AndAlso e.X > -1 AndAlso e.X < (Width + 1) Then
  98.             _Value = _Minimum + CInt((_Maximum - _Minimum) * (e.X / Width))
  99.             Change_Format()
  100.             RaiseEvent Progress_Scroll()
  101.         End If
  102.  
  103.  
  104.     End Sub
  105.     Private Sub _Bar_MouseUp(sender As Object, e As MouseEventArgs) Handles Me.MouseUp, overlap.MouseUp
  106.         Mouse_Down = False
  107.     End Sub
  108. #End Region
  109. #Region "Design"
  110.     Sub New()        'Makes The Design Of The Progress Bar
  111.        With Me
  112.             .Controls.Clear()
  113.             .BackColor = Color.Transparent
  114.             .Size = New System.Drawing.Size(300, 8)
  115.             .BackgroundImageLayout = ImageLayout.Tile
  116.             .BackgroundImage = Convert_Text_To_Image(Empty_Image_Resource)
  117.             .MinimumSize = New System.Drawing.Size(0, 8)
  118.             .MaximumSize = New System.Drawing.Size(300, 8)
  119.             overlap = New PictureBox With {.BackgroundImage = Convert_Text_To_Image(Full_Image_Resource), .BackColor = Color.Transparent, .BackgroundImageLayout = ImageLayout.Tile, .Location = New Point(0, 0), .Width = 0, .Height = 8}
  120.             .Controls.Add(overlap)
  121.             Change_Format()
  122.         End With
  123.     End Sub
  124.     Function Convert_Text_To_Image(ByRef Text As String) As Image
  125.         'A Simple Function That Generates Images From Strings...
  126.        'The Strings That Are Being Converted Were Originally Converted From The Initial Images
  127.        Dim Str As String = Text
  128.         Dim Bytes As Byte() = Convert.FromBase64String(Str)
  129.         Dim Stream As New IO.MemoryStream(Bytes)
  130.         Return Image.FromStream(Stream)
  131.     End Function
  132.     'These Are The Image Resource Converted To Text So The Can Be Stored Into This File.
  133.    Dim Full_Image_Resource As String = "iVBORw0KGgoAAAANSUhEUgAAASwAAAAICAYAAABDN8LhAAAACXBIWXMAAAsSAAALEgHS3X78AAAAB3RJTUUH3QkeFw4UQpKrigAAAWFJREFUaEPt2LtKA0EYxfFvFy8o2qWys1JEEOKtsLDyJWwtfQBFbFLY+x52Yh8lu5s1mwiBQEDwEWxUvCFnPHsxGkmbrc7Aj2Gzs1P+mYkNRttNWgu7XhM1uvIi1/ZCdLyQc4Qkm0VExiXtTNqdCHdsz6XfxJEl2LI+5otKFaPn5izCDhdecOEjgRs4EZFSRX+f8ZSGy5rYM+f8olYcIVb90B0zWC0ueBnaQESkbFm48JGeuvwYh9bBwm+0EmzzxTn1ueht5AYiImUK8Mke9ahmMdZ4C5zJg9Vw6/zxjLpc9DryYxGRsuQnrDRYXT/CibXdst1jOg/WDRZZrwMuvOYpi/fGfx+LiJQO7zxABWzTPoM1m8fqZ9RdxWtkp6wHRusrK9zQH2AiImM26A6eGatbP8RpdroaOXpuii8r1sKSJahagI30usjCVbNZRGRc0s7EnENsWoyVrEV1N1HUicPsG1CfccDBu6a+AAAAAElFTkSuQmCC"
  134.     Dim Empty_Image_Resource As String = "iVBORw0KGgoAAAANSUhEUgAAASwAAAAICAYAAABDN8LhAAAACXBIWXMAAAsSAAALEgHS3X78AAAAB3RJTUUH3QkeFw4tHZcjggAAAOVJREFUaEPt2rsKwjAUBuAguIk4iINSUtILpTjZWQdfwBfwBQQXHRwcvIwiOIjXt/VvPILUzqbDf+AjNDlZf06g6lPGmE4QBJM4jhdRFK2JiBybI5fGWuuWxNS7cGBgF4bhA55ERFWAXLpjkFpikGpLXCmVb+DwUmwmInIN+XTCOrVhlWVZHR/H7wYioqrIpyysKxtYeWFjL5ulF4iIHDrjSTiTuLKBNYJDSSMRkWtbPAsHEle2agisIQ42WG+FZiKiv0MWXfO/FpIk6UtO/RYam2js+b6viYhc8Dyvm6ZpQ2JJSqkXABC20Ja0BDUAAAAASUVORK5CYII="
  135. #End Region
  136. End Class
Advertisement
Add Comment
Please, Sign In to add comment