Garry's Mod Wiki

Revision Difference

DColorCube#560696

<panel> <parent>DSlider</parent> <realm>Client and Menu</realm> <file line="">lua/vgui/dcolorcube.lua</file>⤶ <description> The DColorCube allows a user to select saturation and value but not hue. Uses HSV colors </description> <overrides> <page>Panel:Init</page> <page>Panel:Paint</page> <page>Panel:PaintOver</page> <page>Panel:PerformLayout</page> </overrides> </panel> <example> <description>Creates a DColorCube in a DFrame.</description> <code> local Frame = vgui.Create( "DFrame" ) Frame:SetSize( 300, 300 ) Frame:Center() Frame:MakePopup() DColorCube = vgui.Create( "DColorCube", Frame) DColorCube:SetPos( 50, 50 ) DColorCube:SetSize( 200, 200 ) DColorCube:SetBaseRGB( Color( 0, 255, 0 ) ) </code> </example> <example> <description>Creates a color cube that's hue is controlled by a <page>DRGBPicker</page>, which outputs the color to the background panel, label, and your copy/paste buffer.</description> <code> -- 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 </code> <output><image src="DRGBPicker_example2.png"/></output> </example>