Mega Code Archive

 
Categories / VB.Net Tutorial / 2D Graphics
 

Color

' Quote  from 'Visual Basic 2005 Cookbook Solutions for VB 2005 Programmers 'by Tim Patrick (Author), John Craig (Author) '# Publisher: O'Reilly Media, Inc. (September 21, 2006) '# Language: English '# ISBN-10: 0596101775 '# ISBN-13: 978-0596101770 Imports System.Drawing Imports System.Drawing.Drawing2D Imports System.Windows.Forms public class ColorRGBSH    public Shared Sub Main         Application.Run(New Form1)    End Sub End class Public Class Form1     Private Sub RBG_Scroll(ByVal sender As System.Object, ByVal e As System.Windows.Forms.ScrollEventArgs) _             Handles ValueRed.Scroll, ValueGreen.Scroll, ValueBlue.Scroll         Dim rgbColor As Color         rgbColor = Color.FromArgb(0, ValueRed.Value, ValueGreen.Value, ValueBlue.Value)         ValueHue.Value = CInt(rgbColor.GetHue())         ValueSaturation.Value = CInt(rgbColor.GetSaturation() * 100.0F)         ValueBrightness.Value = CInt(rgbColor.GetBrightness() * 100.0F)         RefreshDisplay()     End Sub     Private Sub ValueHue_Scroll(ByVal sender As Object, ByVal e As System.Windows.Forms.ScrollEventArgs) _             Handles ValueHue.Scroll, ValueSaturation.Scroll, ValueBrightness.Scroll         Dim useRed As Integer         Dim useGreen As Integer         Dim useBlue As Integer         Dim useHue As Single         Dim useSaturation As Single         Dim useBrightness As Single         Dim hueSector As Integer         Dim factor As Single         Dim target1 As Single         Dim target2 As Single         Dim target3 As Single         useHue = CSng(ValueHue.Value)         useSaturation = CSng(ValueSaturation.Value) / 100.0F         useBrightness = CSng(ValueBrightness.Value) / 100.0F         If (useSaturation = 0.0F) Then             useRed = CInt(useBrightness * 255)             useGreen = useRed             useBlue = useRed         Else             hueSector = CInt(useHue / 60.0F)             factor = Math.Abs((useHue / 60.0F) - CSng(hueSector))             target1 = useBrightness * (1 - useSaturation)             target2 = useBrightness * (1 - (factor * useSaturation))             target3 = useBrightness * (1 - ((1 - factor) * useSaturation))             Select Case hueSector                 Case 0, 6                     useRed = CInt(useBrightness * 255.0F)                     useGreen = CInt(target3 * 255.0F)                     useBlue = CInt(target1 * 255.0F)                 Case 1                     useRed = CInt(target2 * 255.0F)                     useGreen = CInt(useBrightness * 255.0F)                     useBlue = CInt(target1 * 255.0F)                 Case 2                     useRed = CInt(target1 * 255.0F)                     useGreen = CInt(useBrightness * 255.0F)                     useBlue = CInt(target3 * 255.0F)                 Case 3                     useRed = CInt(target1 * 255.0F)                     useGreen = CInt(target2 * 255.0F)                     useBlue = CInt(useBrightness * 255.0F)                 Case 4                     useRed = CInt(target3 * 255.0F)                     useGreen = CInt(target1 * 255.0F)                     useBlue = CInt(useBrightness * 255.0F)                 Case 5                     useRed = CInt(useBrightness * 255.0F)                     useGreen = CInt(target1 * 255.0F)                     useBlue = CInt(target2 * 255.0F)             End Select         End If         ValueRed.Value = useRed         ValueGreen.Value = useGreen         ValueBlue.Value = useBlue         RefreshDisplay()     End Sub     Private Sub RefreshDisplay()         NumberRed.Text = CStr(ValueRed.Value)         NumberGreen.Text = CStr(ValueGreen.Value)         NumberBlue.Text = CStr(ValueBlue.Value)         NumberHue.Text = CStr(ValueHue.Value)         NumberSaturation.Text = Format(CDec(ValueSaturation.Value) / 100@, "0.00")         NumberBrightness.Text = Format(CDec(ValueBrightness.Value) / 100@, "0.00")         ShowColor.BackColor = Color.FromArgb(255, ValueRed.Value, _             ValueGreen.Value, ValueBlue.Value)     End Sub     Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load         RBG_Scroll(ValueRed, New Windows.Forms.ScrollEventArgs(ScrollEventType.EndScroll, 0))     End Sub End Class <Global.Microsoft.VisualBasic.CompilerServices.DesignerGenerated()> _ Partial Class Form1     Inherits System.Windows.Forms.Form     'Form overrides dispose to clean up the component list.     <System.Diagnostics.DebuggerNonUserCode()> _     Protected Overrides Sub Dispose(ByVal disposing As Boolean)         If disposing AndAlso components IsNot Nothing Then             components.Dispose()         End If         MyBase.Dispose(disposing)     End Sub     'Required by the Windows Form Designer     Private components As System.ComponentModel.IContainer     'NOTE: The following procedure is required by the Windows Form Designer     'It can be modified using the Windows Form Designer.       'Do not modify it using the code editor.     <System.Diagnostics.DebuggerStepThrough()> _     Private Sub InitializeComponent()         Me.ShowColor = New System.Windows.Forms.PictureBox         Me.LabelRed = New System.Windows.Forms.Label         Me.ValueRed = New System.Windows.Forms.HScrollBar         Me.NumberRed = New System.Windows.Forms.Label         Me.NumberGreen = New System.Windows.Forms.Label         Me.ValueGreen = New System.Windows.Forms.HScrollBar         Me.LabelGreen = New System.Windows.Forms.Label         Me.NumberBlue = New System.Windows.Forms.Label         Me.ValueBlue = New System.Windows.Forms.HScrollBar         Me.LabelBlue = New System.Windows.Forms.Label         Me.NumberBrightness = New System.Windows.Forms.Label         Me.ValueBrightness = New System.Windows.Forms.HScrollBar         Me.LabelBrightness = New System.Windows.Forms.Label         Me.NumberSaturation = New System.Windows.Forms.Label         Me.ValueSaturation = New System.Windows.Forms.HScrollBar         Me.LabelSaturation = New System.Windows.Forms.Label         Me.NumberHue = New System.Windows.Forms.Label         Me.ValueHue = New System.Windows.Forms.HScrollBar         Me.LabelHue = New System.Windows.Forms.Label         CType(Me.ShowColor, System.ComponentModel.ISupportInitialize).BeginInit()         Me.SuspendLayout()         '         'ShowColor         '         Me.ShowColor.BackColor = System.Drawing.SystemColors.Control         Me.ShowColor.Location = New System.Drawing.Point(8, 80)         Me.ShowColor.Name = "ShowColor"         Me.ShowColor.Size = New System.Drawing.Size(336, 32)         Me.ShowColor.TabIndex = 1         Me.ShowColor.TabStop = False         '         'LabelRed         '         Me.LabelRed.AutoSize = True         Me.LabelRed.Location = New System.Drawing.Point(8, 10)         Me.LabelRed.Name = "LabelRed"         Me.LabelRed.Size = New System.Drawing.Size(27, 13)         Me.LabelRed.TabIndex = 0         Me.LabelRed.Text = "Red"         '         'ValueRed         '         Me.ValueRed.LargeChange = 1         Me.ValueRed.Location = New System.Drawing.Point(72, 8)         Me.ValueRed.Maximum = 255         Me.ValueRed.Name = "ValueRed"         Me.ValueRed.Size = New System.Drawing.Size(224, 16)         Me.ValueRed.TabIndex = 1         '         'NumberRed         '         Me.NumberRed.AutoSize = True         Me.NumberRed.Location = New System.Drawing.Point(304, 10)         Me.NumberRed.Name = "NumberRed"         Me.NumberRed.Size = New System.Drawing.Size(13, 13)         Me.NumberRed.TabIndex = 2         Me.NumberRed.Text = "0"         '         'NumberGreen         '         Me.NumberGreen.AutoSize = True         Me.NumberGreen.Location = New System.Drawing.Point(304, 34)         Me.NumberGreen.Name = "NumberGreen"         Me.NumberGreen.Size = New System.Drawing.Size(13, 13)         Me.NumberGreen.TabIndex = 5         Me.NumberGreen.Text = "0"         '         'ValueGreen         '         Me.ValueGreen.LargeChange = 1         Me.ValueGreen.Location = New System.Drawing.Point(72, 32)         Me.ValueGreen.Maximum = 255         Me.ValueGreen.Name = "ValueGreen"         Me.ValueGreen.Size = New System.Drawing.Size(224, 16)         Me.ValueGreen.TabIndex = 4         '         'LabelGreen         '         Me.LabelGreen.AutoSize = True         Me.LabelGreen.Location = New System.Drawing.Point(8, 34)         Me.LabelGreen.Name = "LabelGreen"         Me.LabelGreen.Size = New System.Drawing.Size(36, 13)         Me.LabelGreen.TabIndex = 3         Me.LabelGreen.Text = "Green"         '         'NumberBlue         '         Me.NumberBlue.AutoSize = True         Me.NumberBlue.Location = New System.Drawing.Point(304, 58)         Me.NumberBlue.Name = "NumberBlue"         Me.NumberBlue.Size = New System.Drawing.Size(13, 13)         Me.NumberBlue.TabIndex = 8         Me.NumberBlue.Text = "0"         '         'ValueBlue         '         Me.ValueBlue.LargeChange = 1         Me.ValueBlue.Location = New System.Drawing.Point(72, 56)         Me.ValueBlue.Maximum = 255         Me.ValueBlue.Name = "ValueBlue"         Me.ValueBlue.Size = New System.Drawing.Size(224, 16)         Me.ValueBlue.TabIndex = 7         '         'LabelBlue         '         Me.LabelBlue.AutoSize = True         Me.LabelBlue.Location = New System.Drawing.Point(8, 58)         Me.LabelBlue.Name = "LabelBlue"         Me.LabelBlue.Size = New System.Drawing.Size(28, 13)         Me.LabelBlue.TabIndex = 6         Me.LabelBlue.Text = "Blue"         '         'NumberBrightness         '         Me.NumberBrightness.AutoSize = True         Me.NumberBrightness.Location = New System.Drawing.Point(304, 170)         Me.NumberBrightness.Name = "NumberBrightness"         Me.NumberBrightness.Size = New System.Drawing.Size(13, 13)         Me.NumberBrightness.TabIndex = 17         Me.NumberBrightness.Text = "0"         '         'ValueBrightness         '         Me.ValueBrightness.LargeChange = 1         Me.ValueBrightness.Location = New System.Drawing.Point(72, 168)         Me.ValueBrightness.Name = "ValueBrightness"         Me.ValueBrightness.Size = New System.Drawing.Size(224, 16)         Me.ValueBrightness.TabIndex = 16         '         'LabelBrightness         '         Me.LabelBrightness.AutoSize = True         Me.LabelBrightness.Location = New System.Drawing.Point(8, 170)         Me.LabelBrightness.Name = "LabelBrightness"         Me.LabelBrightness.Size = New System.Drawing.Size(56, 13)         Me.LabelBrightness.TabIndex = 15         Me.LabelBrightness.Text = "Brightness"         '         'NumberSaturation         '         Me.NumberSaturation.AutoSize = True         Me.NumberSaturation.Location = New System.Drawing.Point(304, 146)         Me.NumberSaturation.Name = "NumberSaturation"         Me.NumberSaturation.Size = New System.Drawing.Size(13, 13)         Me.NumberSaturation.TabIndex = 14         Me.NumberSaturation.Text = "0"         '         'ValueSaturation         '         Me.ValueSaturation.LargeChange = 1         Me.ValueSaturation.Location = New System.Drawing.Point(72, 144)         Me.ValueSaturation.Name = "ValueSaturation"         Me.ValueSaturation.Size = New System.Drawing.Size(224, 16)         Me.ValueSaturation.TabIndex = 13         '         'LabelSaturation         '         Me.LabelSaturation.AutoSize = True         Me.LabelSaturation.Location = New System.Drawing.Point(8, 146)         Me.LabelSaturation.Name = "LabelSaturation"         Me.LabelSaturation.Size = New System.Drawing.Size(55, 13)         Me.LabelSaturation.TabIndex = 12         Me.LabelSaturation.Text = "Saturation"         '         'NumberHue         '         Me.NumberHue.AutoSize = True         Me.NumberHue.Location = New System.Drawing.Point(304, 122)         Me.NumberHue.Name = "NumberHue"         Me.NumberHue.Size = New System.Drawing.Size(13, 13)         Me.NumberHue.TabIndex = 11         Me.NumberHue.Text = "0"         '         'ValueHue         '         Me.ValueHue.LargeChange = 1         Me.ValueHue.Location = New System.Drawing.Point(72, 120)         Me.ValueHue.Maximum = 360         Me.ValueHue.Name = "ValueHue"         Me.ValueHue.Size = New System.Drawing.Size(224, 16)         Me.ValueHue.TabIndex = 10         '         'LabelHue         '         Me.LabelHue.AutoSize = True         Me.LabelHue.Location = New System.Drawing.Point(8, 122)         Me.LabelHue.Name = "LabelHue"         Me.LabelHue.Size = New System.Drawing.Size(27, 13)         Me.LabelHue.TabIndex = 9         Me.LabelHue.Text = "Hue"         '         'Form1         '         Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 13.0!)         Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font         Me.ClientSize = New System.Drawing.Size(354, 195)         Me.Controls.Add(Me.NumberBrightness)         Me.Controls.Add(Me.ValueBrightness)         Me.Controls.Add(Me.LabelBrightness)         Me.Controls.Add(Me.NumberSaturation)         Me.Controls.Add(Me.ValueSaturation)         Me.Controls.Add(Me.LabelSaturation)         Me.Controls.Add(Me.NumberHue)         Me.Controls.Add(Me.ValueHue)         Me.Controls.Add(Me.LabelHue)         Me.Controls.Add(Me.NumberBlue)         Me.Controls.Add(Me.ValueBlue)         Me.Controls.Add(Me.LabelBlue)         Me.Controls.Add(Me.NumberGreen)         Me.Controls.Add(Me.ValueGreen)         Me.Controls.Add(Me.LabelGreen)         Me.Controls.Add(Me.NumberRed)         Me.Controls.Add(Me.ValueRed)         Me.Controls.Add(Me.LabelRed)         Me.Controls.Add(Me.ShowColor)         Me.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle         Me.MaximizeBox = False         Me.Name = "Form1"         Me.Text = "RBG and HSV/HSB"         CType(Me.ShowColor, System.ComponentModel.ISupportInitialize).EndInit()         Me.ResumeLayout(False)         Me.PerformLayout()     End Sub     Friend WithEvents ShowColor As System.Windows.Forms.PictureBox     Friend WithEvents LabelRed As System.Windows.Forms.Label     Friend WithEvents ValueRed As System.Windows.Forms.HScrollBar     Friend WithEvents NumberRed As System.Windows.Forms.Label     Friend WithEvents NumberGreen As System.Windows.Forms.Label     Friend WithEvents ValueGreen As System.Windows.Forms.HScrollBar     Friend WithEvents LabelGreen As System.Windows.Forms.Label     Friend WithEvents NumberBlue As System.Windows.Forms.Label     Friend WithEvents ValueBlue As System.Windows.Forms.HScrollBar     Friend WithEvents LabelBlue As System.Windows.Forms.Label     Friend WithEvents NumberBrightness As System.Windows.Forms.Label     Friend WithEvents ValueBrightness As System.Windows.Forms.HScrollBar     Friend WithEvents LabelBrightness As System.Windows.Forms.Label     Friend WithEvents NumberSaturation As System.Windows.Forms.Label     Friend WithEvents ValueSaturation As System.Windows.Forms.HScrollBar     Friend WithEvents LabelSaturation As System.Windows.Forms.Label     Friend WithEvents NumberHue As System.Windows.Forms.Label     Friend WithEvents ValueHue As System.Windows.Forms.HScrollBar     Friend WithEvents LabelHue As System.Windows.Forms.Label End Class