Garry's Mod Wiki

DRGBPicker

Description

DRGBPicker is an interactive panel which can be used to select a color hue.

See DColorCube for a color picker which controls brightness and saturation.

See DColorMixer for a color picker that allows control over hue, saturation, and brightness at once.

View source

Parent

Derives methods, etc not listed on this page from DPanel.

Events

DRGBPicker:OnChange( table col )
Function which is called when the cursor is clicked and/or moved on the color picker. Meant to be overridden.

Methods

This is used internally - although you're able to use it you probably shouldn't. Returns the color at given position on the internal texture.
table DRGBPicker:GetRGB()
Returns the color currently set on the color picker.
DRGBPicker:SetRGB( table color )
Sets the color stored in the color picker. This function is meant to be called internally and will not update the position of the color picker line or call DRGBPicker:OnChange

Example

Creates a color picker which controls the color of the background panel it's parented to.

-- Background panel BGPanel = vgui.Create("DPanel") BGPanel:SetSize(100, 200) BGPanel:Center() -- Color picker local color_picker = vgui.Create("DRGBPicker", BGPanel) color_picker:SetPos(35, 10) color_picker:SetSize(30, 180) -- When the picked color is changed... function color_picker:OnChange(col) -- Change the panel background color BGPanel:SetBackgroundColor(col) end
Output:

Example

Creates a DRGBPicker that controls the hue of a DColorCube, which outputs the color to the background panel, label, and your copy/paste buffer.

-- Background panel BGPanel = vgui.Create("DPanel") BGPanel:SetSize(200, 200) BGPanel:Center() -- Color label local color_label = Label("Color( 255, 255, 255 )", BGPanel) color_label:SetPos(40, 160) color_label:SetSize(150, 20) color_label:SetHighlight(true) color_label:SetColor(Color(0, 0, 0)) -- Color picker local color_picker = vgui.Create("DRGBPicker", BGPanel) color_picker:SetPos(5, 5) color_picker:SetSize(30, 190) -- Color cube local color_cube = vgui.Create("DColorCube", BGPanel) color_cube:SetPos(40, 5) color_cube:SetSize(155, 155) -- When the picked color is changed... function color_picker:OnChange(col) -- Get the hue of the RGB picker and the saturation and vibrance of the color cube local h = ColorToHSV(col) local _, s, v = ColorToHSV(color_cube:GetRGB()) -- Mix them together and update the color cube col = HSVToColor(h, s, v) color_cube:SetColor(col) -- Lastly, update the background color and label UpdateColors(col) end function color_cube:OnUserChanged(col) -- Update background color and label UpdateColors(col) end -- Updates display colors, label, and clipboard text function UpdateColors(col) BGPanel:SetBackgroundColor(col) color_label:SetText("Color( "..col.r..", "..col.g..", "..col.b.." )") color_label:SetColor(Color((255-col.r), (255-col.g), (255-col.b))) SetClipboardText(color_label:GetText()) end
Output: