Advertisement
PiToLoKo

ColorTools by Elektro

Jan 13th, 2014
269
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. ' ***********************************************************************
  2. ' Author   : Elektro
  3. ' Created  : 01-13-2014
  4. ' Modified : 01-13-2014
  5. ' ***********************************************************************
  6. ' <copyright file="ColorTools.vb" company="Elektro Studios">
  7. '     Copyright (c) Elektro Studios. All rights reserved.
  8. ' </copyright>
  9. ' ***********************************************************************
  10. '
  11. ' --------------
  12. ' Public Methods
  13. ' --------------
  14. '
  15. ' Screen.GetPixelColor
  16. ' Screen.GetPixelBrush
  17. ' Screen.GetPixelPen
  18. '
  19. ' ColorConvert.ColorToBrush
  20. ' ColorConvert.ColorToPen
  21. ' ColorConvert.BrushToColor
  22. ' ColorConvert.PentoColor
  23. '
  24. ' StringConvert.ColorToString
  25. ' StringConvert.BrushToString
  26. ' StringConvert.PenToString
  27. ' StringConvert.StringToColor
  28. ' StringConvert.StringToBrush
  29. ' StringConvert.StringToPen
  30. ' StringConvert.StringToString
  31. '
  32. ' RandomGenerators.ARGB
  33. ' RandomGenerators.RGB
  34. ' RandomGenerators.QB
  35. ' RandomGenerators.ConsoleColor
  36. ' RandomGenerators.Brush
  37. ' RandomGenerators.Pen
  38.  
  39. #Region " Usage Examples "
  40.  
  41. '' Gets the color of the pixel at the 50,100 coordinates:
  42. ' Dim c As Color = ColorTools.Screen.GetPixelColor(50, 100)
  43.  
  44. '' Generates a random Brush
  45. ' Dim br As SolidBrush = ColorTools.RandomGenerators.Brush
  46.  
  47. '' Converts a SolidBrush to a Color:
  48. ' Dim c As Color = ColorTools.ColorConvert.BrushToColor(New SolidBrush(Color.Red))
  49.  
  50. '' Converts an HTML Color-String to a Color:
  51. ' PictureBox1.BackColor = ColorTools.StringConvert.StringToColor("#FF00FFFF",
  52. '                                                                ColorTools.StringConvert.ValueFormat.HTML,
  53. '                                                                ColorTools.StringConvert.StringSyntax.None)
  54.  
  55. '' Converts an Hex Color-String to a Color:
  56. ' MsgBox(ColorTools.StringConvert.StringToColor("0x003399",
  57. '                                               ColorTools.StringConvert.ValueFormat.Hexadecimal,
  58. '                                               ColorTools.StringConvert.StringSyntax.None))
  59.  
  60. '' Converts a Byte Color-String with VisyalStudio's property grid syntax to a Color:
  61. ' MsgBox(ColorTools.StringConvert.StringToColor("255; 255; 255; 255",
  62. '                                               ColorTools.StringConvert.ValueFormat.Byte,
  63. '                                               ColorTools.StringConvert.StringSyntax.VisualStudioPropertyGrid).
  64. '                                               Name)
  65.  
  66. '' Converts a HEX Color-String with VB.NET syntax to a Color:
  67. ' MsgBox(ColorTools.StringConvert.StringToColor("Color.FromArgb(&HFF, &H5F, &HEC, &H12)",
  68. '                                               ColorTools.StringConvert.ValueFormat.Hexadecimal,
  69. '                                               ColorTools.StringConvert.StringSyntax.VBNET).
  70. '                                               ToString)
  71.  
  72. '' Converts an HTML Color-String with C# Syntax to a Brush:
  73. ' Dim br As Brush = ColorTools.StringConvert.StringToBrush("ColorTranslator.FromHtml(""#F71608"");",
  74. '                                                          ColorTools.StringConvert.ValueFormat.HTML,
  75. '                                                          ColorTools.StringConvert.StringSyntax.VBNET)
  76.  
  77. '' Converts a Color-String to other Color-String:
  78. ' MsgBox(ColorTools.StringConvert.StringToString("ColorTranslator.FromHtml(""#AF0CCAFE"");",
  79. '                                                ColorTools.StringConvert.ValueFormat.HTML,
  80. '                                                ColorTools.StringConvert.StringSyntax.CSharp,
  81. '                                                ColorTools.StringConvert.ValueFormat.Byte,
  82. '                                                ColorTools.StringConvert.StringSyntax.None,
  83. '                                                True))
  84.  
  85. #End Region
  86.  
  87. #Region " Imports "
  88.  
  89. Imports System.Runtime.InteropServices
  90. Imports System.ComponentModel
  91.  
  92. #End Region
  93.  
  94. ''' <summary>
  95. ''' Native API Methods.
  96. ''' </summary>
  97. Friend NotInheritable Class NativeMethods
  98.  
  99. #Region " API Methods "
  100.  
  101.     ''' <summary>
  102.     ''' Retrieves the red, green, blue (RGB) color value of the pixel at the specified coordinates.
  103.     ''' </summary>
  104.     ''' <param name="hdc">A handle to the device context.</param>
  105.     ''' <param name="nXPos">The x-coordinate, in logical units, of the pixel to be examined.</param>
  106.     ''' <param name="nYPos">The y-coordinate, in logical units, of the pixel to be examined.</param>
  107.     ''' <returns>
  108.     ''' The return value is the COLORREF value that specifies the RGB of the pixel.
  109.     ''' If the pixel is outside of the current clipping region, the return value is CLR_INVALID (0xFFFFFFFF)
  110.     ''' </returns>
  111.     <DllImport("gdi32.dll", SetLastError:=True)>
  112.     Friend Shared Function GetPixel(hdc As IntPtr,
  113.                   ByVal nXPos As Integer,
  114.                   ByVal nYPos As Integer
  115.     ) As UInteger
  116.     End Function
  117.  
  118.     ''' <summary>
  119.     ''' Retrieves a handle to a device context (DC) for the client area of a specified window or for the entire screen.
  120.     ''' You can use the returned handle in subsequent GDI functions to draw in the DC.
  121.     ''' The device context is an opaque data structure, whose values are used internally by GDI.
  122.     ''' </summary>
  123.     ''' <param name="hwnd">
  124.     ''' A handle to the window whose DC is to be retrieved.
  125.     ''' If this value is NULL, GetDC retrieves the DC for the entire screen.
  126.     ''' </param>
  127.     ''' <returns>
  128.     ''' If the function succeeds, the return value is a handle to the DC for the specified window's client area.
  129.     ''' If the function fails, the return value is NULL.
  130.     ''' </returns>
  131.     <DllImport("user32.dll", SetLastError:=False)>
  132.     Friend Shared Function GetDC(
  133.                   ByVal hwnd As IntPtr
  134.     ) As IntPtr
  135.     End Function
  136.  
  137.     ''' <summary>
  138.     ''' Releases a device context (DC), freeing it for use by other applications.
  139.     ''' The effect of the ReleaseDC function depends on the type of DC.
  140.     ''' It frees only common and window DCs.
  141.     ''' It has no effect on class or private DCs.
  142.     ''' </summary>
  143.     ''' <param name="hWnd">A handle to the window whose DC is to be released.</param>
  144.     ''' <param name="hDC">A handle to the DC to be released.</param>
  145.     ''' <returns><c>true</c> if the DC was released, <c>false</c> if the DC was not released.</returns>
  146.     <DllImport("user32.dll", SetLastError:=False)>
  147.     Friend Shared Function ReleaseDC(
  148.                   ByVal hWnd As IntPtr,
  149.                   ByVal hDC As IntPtr
  150.     ) As <MarshalAs(UnmanagedType.Bool)> Boolean
  151.     End Function
  152.  
  153. #End Region
  154.  
  155. End Class
  156.  
  157. ''' <summary>
  158. ''' Tools related about colors.
  159. ''' </summary>
  160. Public Class ColorTools
  161.  
  162. #Region " Screen "
  163.  
  164.     ''' <summary>
  165.     ''' Screen utilities related about colors.
  166.     ''' </summary>
  167.     Public Class Screen
  168.  
  169. #Region " Public Methods "
  170.  
  171.         ''' <summary>
  172.         ''' Gets the color of a pixel on the specified coordinates.
  173.         ''' </summary>
  174.         ''' <param name="Position">Indicates the (X,Y) coordinates.</param>
  175.         ''' <returns>The Color of the pixel.</returns>
  176.         Public Shared Function GetPixelColor(ByVal Position As Point) As Color
  177.  
  178.             Dim hdc As IntPtr = NativeMethods.GetDC(IntPtr.Zero)
  179.             Dim pixel As UInteger = NativeMethods.GetPixel(hdc, Position.X, Position.Y)
  180.             NativeMethods.ReleaseDC(IntPtr.Zero, hdc)
  181.  
  182.             Return Color.FromArgb(CType((pixel And &HFFI), Integer),
  183.                                   CType((pixel And &HFF00I), Integer) >> 8I,
  184.                                   CType((pixel And &HFF0000I), Integer) >> 16I)
  185.  
  186.         End Function
  187.  
  188.         ''' <summary>
  189.         ''' Gets the color of a pixel on the specified coordinates.
  190.         ''' </summary>
  191.         ''' <param name="X">Indicates the X coordinate.</param>
  192.         ''' <param name="Y">Indicates the Y coordinate.</param>
  193.         ''' <returns>The Color of the pixel.</returns>
  194.         Public Shared Function GetPixelColor(ByVal X As Integer,
  195.                                              ByVal Y As Integer) As Color
  196.  
  197.             Return GetPixelColor(New Point(X, Y))
  198.  
  199.         End Function
  200.  
  201.         ''' <summary>
  202.         ''' Gets the color of a pixel at the specified coordinates and returns a Brush.
  203.         ''' </summary>
  204.         ''' <param name="Position">Indicates the (X,Y) coordinates.</param>
  205.         ''' <returns>The Brush.</returns>
  206.         Public Shared Function GetPixelBrush(ByVal Position As Point) As SolidBrush
  207.  
  208.             Using br As New SolidBrush(GetPixelColor(Position.X, Position.Y))
  209.                 Return br
  210.             End Using
  211.  
  212.         End Function
  213.  
  214.         ''' <summary>
  215.         ''' Gets the color of a pixel on the specified coordinates and returns a Brush.
  216.         ''' </summary>
  217.         ''' <param name="X">Indicates the X coordinate.</param>
  218.         ''' <param name="Y">Indicates the Y coordinate.</param>
  219.         ''' <returns>The Brush.</returns>
  220.         Public Shared Function GetPixelBrush(ByVal X As Integer,
  221.                                              ByVal Y As Integer) As SolidBrush
  222.  
  223.             Using br As New SolidBrush(GetPixelColor(New Point(X, Y)))
  224.                 Return br
  225.             End Using
  226.  
  227.         End Function
  228.  
  229.         ''' <summary>
  230.         ''' Gets the color of a pixel at the specified coordinates and returns a Pen.
  231.         ''' </summary>
  232.         ''' <param name="Position">Indicates the (X,Y) coordinates.</param>
  233.         ''' <returns>The Pen.</returns>
  234.         Public Shared Function GetPixelPen(ByVal Position As Point) As Pen
  235.  
  236.             Using p As New Pen(GetPixelColor(Position.X, Position.Y))
  237.                 Return p
  238.             End Using
  239.  
  240.         End Function
  241.  
  242.         ''' <summary>
  243.         ''' Gets the color of a pixel on the specified coordinates and returns a Pen.
  244.         ''' </summary>
  245.         ''' <param name="X">Indicates the X coordinate.</param>
  246.         ''' <param name="Y">Indicates the Y coordinate.</param>
  247.         ''' <returns>The Pen.</returns>
  248.         Public Shared Function GetPixelPen(ByVal X As Integer,
  249.                                              ByVal Y As Integer) As Pen
  250.  
  251.             Using p As New Pen(GetPixelColor(New Point(X, Y)))
  252.                 Return p
  253.             End Using
  254.  
  255.         End Function
  256.  
  257. #End Region
  258.  
  259. #Region " Hidden methods "
  260.  
  261.         ' These methods are purposely hidden from Intellisense just to look better without unneeded methods.
  262.         ' NOTE: The methods can be re-enabled at any-time if needed.
  263.  
  264.         <EditorBrowsable(EditorBrowsableState.Never)>
  265.         Public Shadows Sub Equals()
  266.         End Sub
  267.  
  268.         <EditorBrowsable(EditorBrowsableState.Never)>
  269.         Public Shadows Sub ReferenceEquals()
  270.         End Sub
  271.  
  272. #End Region
  273.  
  274.     End Class
  275.  
  276. #End Region
  277.  
  278. #Region " Color Convert "
  279.  
  280.     ''' <summary>
  281.     ''' Convert between different types.
  282.     ''' </summary>
  283.     Public Class ColorConvert
  284.  
  285. #Region " Public Methods "
  286.  
  287.         ''' <summary>
  288.         ''' Converts a Color to a Brush.
  289.         ''' </summary>
  290.         ''' <param name="Color">Indicates the color to convert.</param>
  291.         ''' <returns>SolidBrush.</returns>
  292.         Public Shared Function ColorToBrush(ByVal [Color] As Color) As SolidBrush
  293.  
  294.             Using br As New SolidBrush([Color])
  295.                 Return br
  296.             End Using
  297.  
  298.         End Function
  299.  
  300.         ''' <summary>
  301.         ''' Converts a Color to a Pen.
  302.         ''' </summary>
  303.         ''' <param name="Color">Indicates the color to convert.</param>
  304.         ''' <returns>Pen.</returns>
  305.         Public Shared Function ColorToPen(ByVal [Color] As Color) As Pen
  306.  
  307.             Using p As New Pen([Color])
  308.                 Return p
  309.             End Using
  310.  
  311.         End Function
  312.  
  313.         ''' <summary>
  314.         ''' Converts a Brush to a Color.
  315.         ''' </summary>
  316.         ''' <param name="Brush">Indicates the Brush to convert.</param>
  317.         ''' <returns>Color.</returns>
  318.         Public Shared Function BrushToColor(ByVal [Brush] As SolidBrush) As Color
  319.  
  320.             Return [Brush].Color
  321.  
  322.         End Function
  323.  
  324.         ''' <summary>
  325.         ''' Converts a Pen to a Color.
  326.         ''' </summary>
  327.         ''' <param name="Pen">Indicates the Pen to convert.</param>
  328.         ''' <returns>Color.</returns>
  329.         Public Shared Function PenToColor(ByVal [Pen] As Pen) As Color
  330.  
  331.             Return [Pen].Color
  332.  
  333.         End Function
  334.  
  335. #End Region
  336.  
  337. #Region " Hidden methods "
  338.  
  339.         ' These methods and properties are purposely hidden from Intellisense just to look better without unneeded methods.
  340.         ' NOTE: The methods can be re-enabled at any-time if needed.
  341.  
  342.         ''' <summary>
  343.         ''' Equalses this instance.
  344.         ''' </summary>
  345.         <EditorBrowsable(EditorBrowsableState.Never)>
  346.         Public Shadows Sub Equals()
  347.         End Sub
  348.  
  349.         ''' <summary>
  350.         ''' Gets the hash code.
  351.         ''' </summary>
  352.         <EditorBrowsable(EditorBrowsableState.Never)>
  353.         Public Shadows Sub ReferenceEquals()
  354.         End Sub
  355.  
  356. #End Region
  357.  
  358.     End Class
  359.  
  360. #End Region
  361.  
  362. #Region " String Convert "
  363.  
  364.     ''' <summary>
  365.     ''' Convert between different color strings and types.
  366.     ''' </summary>
  367.     Public Class StringConvert
  368.  
  369. #Region " Enumerations "
  370.  
  371.         ''' <summary>
  372.         ''' Indicates a color value formatting.
  373.         ''' </summary>
  374.         Public Enum ValueFormat As Short
  375.  
  376.             ''' <summary>
  377.             ''' Byte Format (0 to 255).
  378.             ''' </summary>
  379.             [Byte] = 0
  380.  
  381.             ''' <summary>
  382.             ''' Hexadecimal Format (0xXXXXXX).
  383.             ''' </summary>
  384.             Hexadecimal = 1
  385.  
  386.             ''' <summary>
  387.             ''' HTML Format (#XXXXXX).
  388.             ''' </summary>
  389.             HTML = 2
  390.  
  391.         End Enum
  392.  
  393.         ''' <summary>
  394.         ''' Indicates a syntax to represent a formatted color value.
  395.         ''' </summary>
  396.         Public Enum StringSyntax As Short
  397.  
  398.             ''' <summary>
  399.             ''' Don't use any syntax.
  400.             ''' </summary>
  401.             None = 0
  402.  
  403.             ''' <summary>
  404.             ''' Use VB.NET language syntax.
  405.             ''' </summary>
  406.             VBNET = 1
  407.  
  408.             ''' <summary>
  409.             ''' Use C# language syntax.
  410.             ''' </summary>
  411.             CSharp = 2
  412.  
  413.             ''' <summary>
  414.             ''' Use VisualStudio designer's property grid syntax.
  415.             ''' </summary>
  416.             VisualStudioPropertyGrid = 3
  417.  
  418.         End Enum
  419.  
  420. #End Region
  421.  
  422. #Region " Public Methods "
  423.  
  424.         ''' <summary>
  425.         ''' Formats a Color to return a Color String representation for the specified format and/or language syntax.
  426.         ''' </summary>
  427.         ''' <param name="Color">Indicates the Color to format.</param>
  428.         ''' <param name="Format">Indicates the resulting color value formatting.</param>
  429.         ''' <param name="Syntax">Indicates the resulting string syntax representation.</param>
  430.         ''' <param name="IncludeAlphaChannel">
  431.         ''' If set to <c>true</c> the Alpha channel would be included in the resulting String.
  432.         ''' </param>
  433.         ''' <returns>The formatted color String.</returns>
  434.         Public Shared Function ColorToString(ByVal [Color] As Color,
  435.                                              ByVal Format As ValueFormat,
  436.                                              ByVal Syntax As StringSyntax,
  437.                                              Optional ByVal IncludeAlphaChannel As Boolean = False) As String
  438.  
  439.             Select Case IncludeAlphaChannel
  440.  
  441.                 Case True
  442.                     Return GetARGB([Color], Format, Syntax)
  443.  
  444.                 Case Else
  445.                     Return GetRGB([Color], Format, Syntax)
  446.  
  447.             End Select
  448.  
  449.         End Function
  450.  
  451.         ''' <summary>
  452.         ''' Formats a Brush object to return a Color String representation for the specified format and/or language syntax.
  453.         ''' </summary>
  454.         ''' <param name="Brush">Indicates the Brush object to format.</param>
  455.         ''' <param name="Format">Indicates the resulting color value formatting.</param>
  456.         ''' <param name="Syntax">Indicates the resulting string syntax representation.</param>
  457.         ''' <param name="IncludeAlphaChannel">
  458.         ''' If set to <c>true</c> the Alpha channel would be included in the resulting String.
  459.         ''' </param>
  460.         ''' <returns>The formatted color String.</returns>
  461.         Public Shared Function BrushToString(ByVal [Brush] As SolidBrush,
  462.                                              ByVal Format As ValueFormat,
  463.                                              ByVal Syntax As StringSyntax,
  464.                                              Optional ByVal IncludeAlphaChannel As Boolean = False) As String
  465.  
  466.             Select Case IncludeAlphaChannel
  467.  
  468.                 Case True
  469.                     Return GetARGB([Brush].Color, Format, Syntax)
  470.  
  471.                 Case Else
  472.                     Return GetRGB([Brush].Color, Format, Syntax)
  473.  
  474.             End Select
  475.  
  476.         End Function
  477.  
  478.         ''' <summary>
  479.         ''' Formats a Pen object to return a Color String representation for the specified format and/or language syntax.
  480.         ''' </summary>
  481.         ''' <param name="Pen">Indicates the Pen object to format.</param>
  482.         ''' <param name="Format">Indicates the resulting color value formatting.</param>
  483.         ''' <param name="Syntax">Indicates the resulting string syntax representation.</param>
  484.         ''' <param name="IncludeAlphaChannel">
  485.         ''' If set to <c>true</c> the Alpha channel would be included in the resulting String.
  486.         ''' </param>
  487.         ''' <returns>The formatted color String.</returns>
  488.         Public Shared Function PenToString(ByVal [Pen] As Pen,
  489.                                            ByVal Format As ValueFormat,
  490.                                            ByVal Syntax As StringSyntax,
  491.                                            Optional ByVal IncludeAlphaChannel As Boolean = False) As String
  492.  
  493.             Select Case IncludeAlphaChannel
  494.  
  495.                 Case True
  496.                     Return GetARGB([Pen].Color, Format, Syntax)
  497.  
  498.                 Case Else
  499.                     Return GetRGB([Pen].Color, Format, Syntax)
  500.  
  501.             End Select
  502.  
  503.         End Function
  504.  
  505.         ''' <summary>
  506.         ''' Formats a Color String of the specified format and/or language syntax to return a Color.
  507.         ''' </summary>
  508.         ''' <param name="ColorString">The color string.</param>
  509.         ''' <param name="Format">Indicates the value format that the input string is written.</param>
  510.         ''' <param name="Syntax">Indicates the string syntax that the input string is written.</param>
  511.         ''' <returns>The Color</returns>
  512.         Public Shared Function StringToColor(ByVal ColorString As String,
  513.                                              ByVal Format As ValueFormat,
  514.                                              ByVal Syntax As StringSyntax) As Color
  515.  
  516.             Dim Converter As New ColorConverter
  517.  
  518.             Select Case Format
  519.  
  520.                 Case ValueFormat.Byte
  521.  
  522.                     Select Case Syntax
  523.  
  524.                         Case StringSyntax.None,
  525.                             StringSyntax.VisualStudioPropertyGrid
  526.                             Return Converter.ConvertFromString(ColorString.Trim.
  527.                                                                Replace(",", ";"))
  528.  
  529.                         Case StringSyntax.VBNET
  530.                             Return Converter.ConvertFromString(ColorString.Trim.ToLower.
  531.                                                                Replace("color.fromargb(", Nothing).
  532.                                                                Replace(")", Nothing).
  533.                                                                Replace(",", ";"))
  534.  
  535.                         Case StringSyntax.CSharp
  536.                             Return Converter.ConvertFromString(ColorString.Trim.ToLower.
  537.                                                                Replace("color.fromargb(", Nothing).
  538.                                                                Replace(");", Nothing).
  539.                                                                Replace(",", ";"))
  540.  
  541.                         Case Else
  542.                             Return Color.Empty
  543.  
  544.                     End Select
  545.  
  546.                 Case ValueFormat.Hexadecimal
  547.  
  548.                     Select Case Syntax
  549.  
  550.                         Case StringSyntax.None,
  551.                             StringSyntax.VisualStudioPropertyGrid
  552.                             Return ColorTranslator.FromHtml(ColorString.Trim.Replace("0x", "#"))
  553.  
  554.                         Case StringSyntax.VBNET
  555.                             Return Converter.ConvertFromString("&H" & ColorString.Trim.ToLower.
  556.                                                                Replace("color.fromargb(", Nothing).
  557.                                                                Replace(")", Nothing).
  558.                                                                Replace(",", Nothing).
  559.                                                                Replace("&h", Nothing).
  560.                                                                Replace(" ", Nothing))
  561.  
  562.                         Case StringSyntax.CSharp
  563.                             Return Converter.ConvertFromString("&H" & ColorString.Trim.ToLower.
  564.                                                                Replace("color.fromargb(", Nothing).
  565.                                                                Replace(");", Nothing).
  566.                                                                Replace(",", Nothing).
  567.                                                                Replace("0x", Nothing).
  568.                                                                Replace(" ", Nothing))
  569.  
  570.                         Case Else
  571.                             Return Color.Empty
  572.  
  573.                     End Select
  574.  
  575.                 Case ValueFormat.HTML
  576.  
  577.                     Select Case Syntax
  578.  
  579.                         Case StringSyntax.None,
  580.                             StringSyntax.VisualStudioPropertyGrid
  581.                             Return ColorTranslator.FromHtml(ColorString.Trim)
  582.  
  583.                         Case StringSyntax.VBNET
  584.                             Return ColorTranslator.FromHtml(ColorString.Trim.ToLower.
  585.                                                             Replace("colortranslator.fromhtml(", Nothing).
  586.                                                             Replace(")", Nothing))
  587.  
  588.                         Case StringSyntax.CSharp
  589.                             Return ColorTranslator.FromHtml(ColorString.Trim.ToLower.
  590.                                                             Replace("colortranslator.fromhtml(", Nothing).
  591.                                                             Replace(");", Nothing))
  592.  
  593.                         Case Else
  594.                             Return Color.Empty
  595.  
  596.                     End Select
  597.  
  598.             End Select
  599.  
  600.         End Function
  601.  
  602.         ''' <summary>
  603.         ''' Formats a Color String of the specified format and/or language syntax to return a Brush.
  604.         ''' </summary>
  605.         ''' <param name="ColorString">The color string.</param>
  606.         ''' <param name="Format">Indicates the value format that the input string is written.</param>
  607.         ''' <param name="Syntax">Indicates the string syntax that the input string is written.</param>
  608.         ''' <returns>The Brush</returns>
  609.         Public Shared Function StringToBrush(ByVal ColorString As String,
  610.                                              ByVal Format As ValueFormat,
  611.                                              ByVal Syntax As StringSyntax) As SolidBrush
  612.  
  613.             Using br As New SolidBrush(StringToColor(ColorString, Format, Syntax))
  614.                 Return br
  615.             End Using
  616.  
  617.         End Function
  618.  
  619.         ''' <summary>
  620.         ''' Formats a Color String of the specified format and/or language syntax to return a Pen.
  621.         ''' </summary>
  622.         ''' <param name="ColorString">The color string.</param>
  623.         ''' <param name="Format">Indicates the value format that the input string is written.</param>
  624.         ''' <param name="Syntax">Indicates the string syntax that the input string is written.</param>
  625.         ''' <returns>The Pen</returns>
  626.         Public Shared Function StringToPen(ByVal ColorString As String,
  627.                                            ByVal Format As ValueFormat,
  628.                                            ByVal Syntax As StringSyntax) As Pen
  629.  
  630.             Using p As New Pen(StringToColor(ColorString, Format, Syntax))
  631.                 Return p
  632.             End Using
  633.  
  634.         End Function
  635.  
  636.         ''' <summary>
  637.         ''' Formats a Color String of the specified format and/or language syntax to return a
  638.         ''' new String of other format and/or language syntax.
  639.         ''' </summary>
  640.         ''' <param name="ColorString">The color string.</param>
  641.         ''' <param name="Format">The format in which the input string is written.</param>
  642.         ''' <param name="Syntax">The syntax of the input string (if any).</param>
  643.         ''' <param name="NewFormat">The format in which the input string is written.</param>
  644.         ''' <param name="NewSyntax">The syntax of the input string (if any).</param>
  645.         ''' <param name="IncludeAlphaChannel">
  646.         ''' If set to <c>true</c> the Alpha channel would be included in the resulting String.
  647.         ''' </param>
  648.         ''' <returns>The Color</returns>
  649.         Public Shared Function StringToString(ByVal ColorString As String,
  650.                                               ByVal Format As ValueFormat,
  651.                                               ByVal Syntax As StringSyntax,
  652.                                               ByVal NewFormat As ValueFormat,
  653.                                               ByVal NewSyntax As StringSyntax,
  654.                                               Optional ByVal IncludeAlphaChannel As Boolean = False) As String
  655.  
  656.             Dim Converter As New ColorConverter
  657.  
  658.             Select Case Format
  659.  
  660.                 Case ValueFormat.Byte
  661.  
  662.                     Select Case Syntax
  663.                         Case StringSyntax.None,
  664.                              StringSyntax.VisualStudioPropertyGrid
  665.  
  666.                             ColorString = ColorString.Trim.
  667.                                           Replace(",", ";")
  668.  
  669.                         Case StringSyntax.VBNET
  670.                             ColorString = ColorString.Trim.ToLower.
  671.                                           Replace("color.fromargb(", Nothing).
  672.                                           Replace(")", Nothing).
  673.                                           Replace(",", ";")
  674.  
  675.                         Case StringSyntax.CSharp
  676.                             ColorString = ColorString.Trim.ToLower.
  677.                                           Replace("color.fromargb(", Nothing).
  678.                                           Replace(");", Nothing).
  679.                                           Replace(",", ";")
  680.  
  681.                         Case Else
  682.                             ColorString = String.Empty
  683.  
  684.                     End Select
  685.  
  686.                 Case ValueFormat.Hexadecimal
  687.  
  688.                     Select Case Syntax
  689.  
  690.                         Case StringSyntax.None, StringSyntax.VisualStudioPropertyGrid
  691.                             ColorString = ColorString.Trim.Replace("0x", "#")
  692.  
  693.                         Case StringSyntax.VBNET
  694.                             ColorString = "&H" & ColorString.Trim.ToLower.
  695.                                           Replace("color.fromargb(", Nothing).
  696.                                           Replace(")", Nothing).
  697.                                           Replace(",", Nothing).
  698.                                           Replace("&h", Nothing).
  699.                                           Replace(" ", Nothing)
  700.  
  701.                         Case StringSyntax.CSharp
  702.                             ColorString = ColorString.Trim.ToLower.
  703.                                           Replace("color.fromargb(", Nothing).
  704.                                           Replace(");", Nothing).
  705.                                           Replace(",", Nothing).
  706.                                           Replace("0x", Nothing).
  707.                                           Replace(" ", Nothing)
  708.  
  709.                         Case Else
  710.                             ColorString = String.Empty
  711.  
  712.                     End Select
  713.  
  714.                 Case ValueFormat.HTML
  715.  
  716.                     Select Case Syntax
  717.  
  718.                         Case StringSyntax.None, StringSyntax.VisualStudioPropertyGrid
  719.                             ColorString = ColorString
  720.  
  721.                         Case StringSyntax.VBNET
  722.                             ColorString = ColorString.Trim.ToLower.
  723.                                           Replace("colortranslator.fromhtml(", Nothing).
  724.                                           Replace(")", Nothing).
  725.                                           Replace("""", Nothing)
  726.  
  727.                         Case StringSyntax.CSharp
  728.                             ColorString = ColorString.Trim.ToLower.
  729.                                           Replace("colortranslator.fromhtml(", Nothing).
  730.                                           Replace(");", Nothing).
  731.                                           Replace("""", Nothing)
  732.  
  733.                         Case Else
  734.                             ColorString = String.Empty
  735.  
  736.                     End Select
  737.  
  738.             End Select
  739.  
  740.             Select Case IncludeAlphaChannel
  741.  
  742.                 Case True
  743.                     Return GetARGB(Converter.ConvertFromString(ColorString), NewFormat, NewSyntax)
  744.  
  745.                 Case Else
  746.                     Return GetRGB(Converter.ConvertFromString(ColorString), NewFormat, NewSyntax)
  747.  
  748.             End Select
  749.  
  750.         End Function
  751.  
  752. #End Region
  753.  
  754. #Region " Private Methods "
  755.  
  756.         ''' <summary>
  757.         ''' Formats a Color to return an RGB String representation for the specified format and/or language syntax.
  758.         ''' </summary>
  759.         ''' <param name="Color">Indicates the color to format.</param>
  760.         ''' <param name="Format">Indicates the resulting RGB value formatting.</param>
  761.         ''' <param name="Syntax">Indicates the resulting string syntax to represent the formatted RGB value.</param>
  762.         ''' <returns>The formatted RGB String.</returns>
  763.         Private Shared Function GetRGB(ByVal [Color] As Color,
  764.                                        ByVal Format As ValueFormat,
  765.                                        ByVal Syntax As StringSyntax) As String
  766.  
  767.             Select Case Format
  768.  
  769.                 Case ValueFormat.Byte
  770.  
  771.                     Dim INTstr As String =
  772.                         String.Format("{0}, {1}, {2}",
  773.                                       Convert.ToString([Color].R),
  774.                                       Convert.ToString([Color].G),
  775.                                       Convert.ToString([Color].B))
  776.  
  777.                     Select Case Syntax
  778.  
  779.                         Case StringSyntax.None
  780.                             Return INTstr
  781.  
  782.                         Case StringSyntax.VBNET
  783.                             Return String.Format("Color.FromArgb({0})", INTstr)
  784.  
  785.                         Case StringSyntax.CSharp
  786.                             Return String.Format("Color.FromArgb({0});", INTstr)
  787.  
  788.                         Case StringSyntax.VisualStudioPropertyGrid
  789.                             Return INTstr.Replace(",", ";")
  790.  
  791.                         Case Else
  792.                             Return String.Empty
  793.  
  794.                     End Select
  795.  
  796.                 Case ValueFormat.Hexadecimal
  797.  
  798.                     Dim HEXstr As String =
  799.                         String.Format("0x{0}{1}{2}",
  800.                                       Convert.ToString([Color].R, 16).ToUpper,
  801.                                       Convert.ToString([Color].G, 16).ToUpper,
  802.                                       Convert.ToString([Color].B, 16).ToUpper)
  803.  
  804.                     Select Case Syntax
  805.  
  806.                         Case StringSyntax.None, StringSyntax.VisualStudioPropertyGrid
  807.                             Return HEXstr
  808.  
  809.                         Case StringSyntax.VBNET
  810.                             Return String.Format("Color.FromArgb(&H{0}, &H{1}, &H{2})",
  811.                                                  Convert.ToString([Color].R, 16).ToUpper,
  812.                                                  Convert.ToString([Color].G, 16).ToUpper,
  813.                                                  Convert.ToString([Color].B, 16).ToUpper)
  814.  
  815.                         Case StringSyntax.CSharp
  816.                             Return String.Format("Color.FromArgb(0x{0}, 0x{1}, 0x{2});",
  817.                                                  Convert.ToString([Color].R, 16).ToUpper,
  818.                                                  Convert.ToString([Color].G, 16).ToUpper,
  819.                                                  Convert.ToString([Color].B, 16).ToUpper)
  820.  
  821.                         Case Else
  822.                             Return String.Empty
  823.  
  824.                     End Select
  825.  
  826.                 Case ValueFormat.HTML
  827.  
  828.                     Dim HTMLstr As String =
  829.                         ColorTranslator.ToHtml([Color])
  830.  
  831.                     Select Case Syntax
  832.  
  833.                         Case StringSyntax.None, StringSyntax.VisualStudioPropertyGrid
  834.                             Return HTMLstr
  835.  
  836.                         Case StringSyntax.VBNET
  837.                             Return String.Format("ColorTranslator.FromHtml(""{0}"")", HTMLstr)
  838.  
  839.                         Case StringSyntax.CSharp
  840.                             Return String.Format("ColorTranslator.FromHtml(""{0}"");", HTMLstr)
  841.  
  842.                         Case Else
  843.                             Return String.Empty
  844.  
  845.                     End Select
  846.  
  847.                 Case Else
  848.                     Return String.Empty
  849.  
  850.             End Select
  851.  
  852.         End Function
  853.  
  854.         ''' <summary>
  855.         ''' Formats a Color to return an ARGB String representation for the specified format and/or language syntax.
  856.         ''' </summary>
  857.         ''' <param name="Color">Indicates the color to format.</param>
  858.         ''' <param name="Format">Indicates the resulting ARGB value formatting.</param>
  859.         ''' <param name="Syntax">Indicates the resulting string syntax to represent the formatted ARGB value.</param>
  860.         ''' <returns>The formatted ARGB String.</returns>
  861.         Private Shared Function GetARGB(ByVal [Color] As Color,
  862.                                         ByVal Format As ValueFormat,
  863.                                         ByVal Syntax As StringSyntax) As String
  864.  
  865.             Select Case Format
  866.  
  867.                 Case ValueFormat.Byte
  868.  
  869.                     Dim INTstr As String =
  870.                         String.Format("{0}, {1}, {2}, {3}",
  871.                                       Convert.ToString([Color].A),
  872.                                       Convert.ToString([Color].R),
  873.                                       Convert.ToString([Color].G),
  874.                                       Convert.ToString([Color].B))
  875.  
  876.                     Select Case Syntax
  877.  
  878.                         Case StringSyntax.None
  879.                             Return INTstr
  880.  
  881.                         Case StringSyntax.VBNET
  882.                             Return String.Format("Color.FromArgb({0})", INTstr)
  883.  
  884.                         Case StringSyntax.CSharp
  885.                             Return String.Format("Color.FromArgb({0});", INTstr)
  886.  
  887.                         Case StringSyntax.VisualStudioPropertyGrid
  888.                             Return INTstr.Replace(",", ";")
  889.  
  890.                         Case Else
  891.                             Return String.Empty
  892.  
  893.                     End Select
  894.  
  895.                 Case ValueFormat.Hexadecimal
  896.  
  897.                     Dim HEXstr As String =
  898.                         String.Format("0x{0}{1}{2}{3}",
  899.                                       Convert.ToString([Color].A, 16).ToUpper,
  900.                                       Convert.ToString([Color].R, 16).ToUpper,
  901.                                       Convert.ToString([Color].G, 16).ToUpper,
  902.                                       Convert.ToString([Color].B, 16).ToUpper)
  903.  
  904.                     Select Case Syntax
  905.  
  906.                         Case StringSyntax.None, StringSyntax.VisualStudioPropertyGrid
  907.                             Return HEXstr
  908.  
  909.                         Case StringSyntax.VBNET
  910.                             Return String.Format("Color.FromArgb(&H{0}, &H{1}, &H{2}, &H{3})",
  911.                                                  Convert.ToString([Color].A, 16).ToUpper,
  912.                                                  Convert.ToString([Color].R, 16).ToUpper,
  913.                                                  Convert.ToString([Color].G, 16).ToUpper,
  914.                                                  Convert.ToString([Color].B, 16).ToUpper)
  915.  
  916.                         Case StringSyntax.CSharp
  917.                             Return String.Format("Color.FromArgb(0x{0}, 0x{1}, 0x{2}, 0x{3});",
  918.                                                  Convert.ToString([Color].A, 16).ToUpper,
  919.                                                  Convert.ToString([Color].R, 16).ToUpper,
  920.                                                  Convert.ToString([Color].G, 16).ToUpper,
  921.                                                  Convert.ToString([Color].B, 16).ToUpper)
  922.  
  923.                         Case Else
  924.                             Return String.Empty
  925.  
  926.                     End Select
  927.  
  928.                 Case ValueFormat.HTML
  929.  
  930.                     Dim HTMLstr As String =
  931.                         ColorTranslator.ToHtml([Color])
  932.  
  933.                     Select Case Syntax
  934.  
  935.                         Case StringSyntax.None, StringSyntax.VisualStudioPropertyGrid
  936.                             Return HTMLstr
  937.  
  938.                         Case StringSyntax.VBNET
  939.                             Return String.Format("ColorTranslator.FromHtml(""{0}"")", HTMLstr)
  940.  
  941.                         Case StringSyntax.CSharp
  942.                             Return String.Format("ColorTranslator.FromHtml(""{0}"");", HTMLstr)
  943.  
  944.                         Case Else
  945.                             Return String.Empty
  946.  
  947.                     End Select
  948.  
  949.                 Case Else
  950.                     Return String.Empty
  951.  
  952.             End Select
  953.  
  954.         End Function
  955.  
  956. #End Region
  957.  
  958. #Region " Hidden methods "
  959.  
  960.         ' These methods and properties are purposely hidden from Intellisense just to look better without unneeded methods.
  961.         ' NOTE: The methods can be re-enabled at any-time if needed.
  962.  
  963.         <EditorBrowsable(EditorBrowsableState.Never)>
  964.         Public Shadows Sub Equals()
  965.         End Sub
  966.  
  967.         <EditorBrowsable(EditorBrowsableState.Never)>
  968.         Public Shadows Sub ReferenceEquals()
  969.         End Sub
  970.  
  971. #End Region
  972.  
  973.     End Class
  974.  
  975. #End Region
  976.  
  977. #Region " Random Generators "
  978.  
  979.     ''' <summary>
  980.     ''' Random Color generators.
  981.     ''' </summary>
  982.     Public Class RandomGenerators
  983.  
  984. #Region " Public Methods "
  985.  
  986.         ''' <summary>
  987.         ''' Generates a random RGB color.
  988.         ''' </summary>
  989.         ''' <returns>Color.</returns>
  990.         Public Shared Function RGB() As Color
  991.  
  992.             Dim Rand As New Random
  993.             Return Color.FromArgb(255,
  994.                                   Rand.Next(0, 255),
  995.                                   Rand.Next(0, 255),
  996.                                   Rand.Next(0, 255))
  997.  
  998.         End Function
  999.  
  1000.         ''' <summary>
  1001.         ''' Generates a random RGB color between the specified minimum/maximum values.
  1002.         ''' </summary>
  1003.         ''' <param name="RMin">Indicates the RED channel minimum value.</param>
  1004.         ''' <param name="RMax">Indicates the RED channel maximum value.</param>
  1005.         ''' <param name="GMin">Indicates the GREEN channel minimum value.</param>
  1006.         ''' <param name="GMax">Indicates the GREEN channel maximum value.</param>
  1007.         ''' <param name="BMin">Indicates the BLUE channel minimum value.</param>
  1008.         ''' <param name="BMax">Indicates the BLUE channel maximum value.</param>
  1009.         ''' <returns>Color.</returns>
  1010.         Public Shared Function RGB(Optional ByVal RMin As Byte = 0,
  1011.                                    Optional ByVal RMax As Byte = 255,
  1012.                                    Optional ByVal GMin As Byte = 0,
  1013.                                    Optional ByVal GMax As Byte = 255,
  1014.                                    Optional ByVal BMin As Byte = 0,
  1015.                                    Optional ByVal BMax As Byte = 255) As Color
  1016.  
  1017.             Dim Rand As New Random
  1018.             Return Color.FromArgb(255,
  1019.                                   Rand.Next(RMin, RMax),
  1020.                                   Rand.Next(GMin, GMax),
  1021.                                   Rand.Next(BMin, BMax))
  1022.  
  1023.         End Function
  1024.  
  1025.         ''' <summary>
  1026.         ''' Generates a random ARGB color.
  1027.         ''' </summary>
  1028.         ''' <returns>Color.</returns>
  1029.         Public Shared Function ARGB() As Color
  1030.  
  1031.             Dim Rand As New Random
  1032.             Return Color.FromArgb(Rand.Next(0, 255),
  1033.                                   Rand.Next(0, 255),
  1034.                                   Rand.Next(0, 255),
  1035.                                   Rand.Next(0, 255))
  1036.  
  1037.         End Function
  1038.  
  1039.         ''' <summary>
  1040.         ''' Generates a random RGB color between the specified minimum/maximum values.
  1041.         ''' </summary>
  1042.         ''' <param name="AMin">Indicates the ALPHA channel minimum value.</param>
  1043.         ''' <param name="AMax">Indicates the ALPHA channel maximum value.</param>
  1044.         ''' <param name="RMin">Indicates the RED channel minimum value.</param>
  1045.         ''' <param name="RMax">Indicates the RED channel maximum value.</param>
  1046.         ''' <param name="GMin">Indicates the GREEN channel minimum value.</param>
  1047.         ''' <param name="GMax">Indicates the GREEN channel maximum value.</param>
  1048.         ''' <param name="BMin">Indicates the BLUE channel minimum value.</param>
  1049.         ''' <param name="BMax">Indicates the BLUE channel maximum value.</param>
  1050.         ''' <returns>Color.</returns>
  1051.         Public Shared Function ARGB(Optional ByVal AMin As Byte = 0,
  1052.                                     Optional ByVal AMax As Byte = 255,
  1053.                                     Optional ByVal RMin As Byte = 0,
  1054.                                     Optional ByVal RMax As Byte = 255,
  1055.                                     Optional ByVal GMin As Byte = 0,
  1056.                                     Optional ByVal GMax As Byte = 255,
  1057.                                     Optional ByVal BMin As Byte = 0,
  1058.                                     Optional ByVal BMax As Byte = 255) As Color
  1059.  
  1060.             Dim Rand As New Random
  1061.             Return Color.FromArgb(Rand.Next(AMin, AMax),
  1062.                                   Rand.Next(RMin, RMax),
  1063.                                   Rand.Next(GMin, GMax),
  1064.                                   Rand.Next(BMin, BMax))
  1065.  
  1066.         End Function
  1067.  
  1068.         ''' <summary>
  1069.         ''' Generates a random QB color.
  1070.         ''' </summary>
  1071.         ''' <returns>Color.</returns>
  1072.         Public Shared Function QB() As Color
  1073.  
  1074.             Dim Rand As New Random
  1075.             Dim c As Color = Color.FromName([Enum].Parse(GetType(ConsoleColor),
  1076.                                                          Rand.Next(0, 15)).ToString)
  1077.  
  1078.             Select Case c.IsKnownColor
  1079.  
  1080.                 ' Fix for the 'Consolecolor.DarkYellow' value which doesn't have color information.
  1081.                 Case False
  1082.                     Return Color.FromArgb(255, 128, 128, 0)
  1083.  
  1084.                 Case Else
  1085.                     Return c
  1086.  
  1087.             End Select
  1088.  
  1089.         End Function
  1090.  
  1091.         ''' <summary>
  1092.         ''' Generates a random ConsoleColor color.
  1093.         ''' </summary>
  1094.         ''' <returns>ConsoleColor.</returns>
  1095.         Public Shared Function [ConsoleColor]() As ConsoleColor
  1096.  
  1097.             Dim Rand As New Random
  1098.             Return [Enum].Parse(GetType(ConsoleColor), Rand.Next(0, 15))
  1099.  
  1100.         End Function
  1101.  
  1102.         ''' <summary>
  1103.         ''' Generates a random Brush.
  1104.         ''' </summary>
  1105.         ''' <returns>SolidBrush.</returns>
  1106.         Public Shared Function [Brush]() As SolidBrush
  1107.  
  1108.             Using br As New SolidBrush(RGB)
  1109.                 Return br
  1110.             End Using
  1111.  
  1112.         End Function
  1113.  
  1114.         ''' <summary>
  1115.         ''' Generates a random Brush between the specified minimum/maximum values.
  1116.         ''' </summary>
  1117.         ''' <param name="AMin">Indicates the ALPHA channel minimum value.</param>
  1118.         ''' <param name="AMax">Indicates the ALPHA channel maximum value.</param>
  1119.         ''' <param name="RMin">Indicates the RED channel minimum value.</param>
  1120.         ''' <param name="RMax">Indicates the RED channel maximum value.</param>
  1121.         ''' <param name="GMin">Indicates the GREEN channel minimum value.</param>
  1122.         ''' <param name="GMax">Indicates the GREEN channel maximum value.</param>
  1123.         ''' <param name="BMin">Indicates the BLUE channel minimum value.</param>
  1124.         ''' <param name="BMax">Indicates the BLUE channel maximum value.</param>
  1125.         ''' <returns>SolidBrush.</returns>
  1126.         Public Shared Function [Brush](Optional ByVal AMin As Byte = 0,
  1127.                                        Optional ByVal AMax As Byte = 255,
  1128.                                        Optional ByVal RMin As Byte = 0,
  1129.                                        Optional ByVal RMax As Byte = 255,
  1130.                                        Optional ByVal GMin As Byte = 0,
  1131.                                        Optional ByVal GMax As Byte = 255,
  1132.                                        Optional ByVal BMin As Byte = 0,
  1133.                                        Optional ByVal BMax As Byte = 255) As SolidBrush
  1134.  
  1135.             Using br As New SolidBrush(ARGB(AMin, AMax, RMin, RMax, GMin, GMax, BMin, BMax))
  1136.                 Return br
  1137.             End Using
  1138.  
  1139.         End Function
  1140.  
  1141.         ''' <summary>
  1142.         ''' Generates a random Pen.
  1143.         ''' </summary>
  1144.         ''' <returns>Pen.</returns>
  1145.         Public Shared Function [Pen]() As Pen
  1146.  
  1147.             Using p As New [Pen](RGB)
  1148.                 Return p
  1149.             End Using
  1150.  
  1151.         End Function
  1152.  
  1153.         ''' <summary>
  1154.         ''' Generates a random Pen between the specified minimum/maximum values.
  1155.         ''' </summary>
  1156.         ''' <param name="AMin">Indicates the ALPHA channel minimum value.</param>
  1157.         ''' <param name="AMax">Indicates the ALPHA channel maximum value.</param>
  1158.         ''' <param name="RMin">Indicates the RED channel minimum value.</param>
  1159.         ''' <param name="RMax">Indicates the RED channel maximum value.</param>
  1160.         ''' <param name="GMin">Indicates the GREEN channel minimum value.</param>
  1161.         ''' <param name="GMax">Indicates the GREEN channel maximum value.</param>
  1162.         ''' <param name="BMin">Indicates the BLUE channel minimum value.</param>
  1163.         ''' <param name="BMax">Indicates the BLUE channel maximum value.</param>
  1164.         ''' <returns>Pen.</returns>
  1165.         Public Shared Function [Pen](Optional ByVal AMin As Byte = 0,
  1166.                                      Optional ByVal AMax As Byte = 255,
  1167.                                      Optional ByVal RMin As Byte = 0,
  1168.                                      Optional ByVal RMax As Byte = 255,
  1169.                                      Optional ByVal GMin As Byte = 0,
  1170.                                      Optional ByVal GMax As Byte = 255,
  1171.                                      Optional ByVal BMin As Byte = 0,
  1172.                                      Optional ByVal BMax As Byte = 255) As Pen
  1173.  
  1174.             Using p As New [Pen](ARGB(AMin, AMax, RMin, RMax, GMin, GMax, BMin, BMax))
  1175.                 Return p
  1176.             End Using
  1177.  
  1178.         End Function
  1179.  
  1180. #End Region
  1181.  
  1182. #Region " Hidden methods "
  1183.  
  1184.         ' These methods are purposely hidden from Intellisense just to look better without unneeded methods.
  1185.         ' NOTE: The methods can be re-enabled at any-time if needed.
  1186.  
  1187.         <EditorBrowsable(EditorBrowsableState.Never)>
  1188.         Public Shadows Sub Equals()
  1189.         End Sub
  1190.  
  1191.         <EditorBrowsable(EditorBrowsableState.Never)>
  1192.         Public Shadows Sub ReferenceEquals()
  1193.         End Sub
  1194.  
  1195. #End Region
  1196.  
  1197.     End Class
  1198.  
  1199. #End Region
  1200.  
  1201. #Region " Hidden methods "
  1202.  
  1203.     ' These methods are purposely hidden from Intellisense just to look better without unneeded methods.
  1204.     ' NOTE: The methods can be re-enabled at any-time if needed.
  1205.  
  1206.     <EditorBrowsable(EditorBrowsableState.Never)>
  1207.     Public Shadows Sub Equals()
  1208.     End Sub
  1209.  
  1210.     <EditorBrowsable(EditorBrowsableState.Never)>
  1211.     Public Shadows Sub ReferenceEquals()
  1212.     End Sub
  1213.  
  1214. #End Region
  1215.  
  1216. End Class
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement