private void CreateColorControl(string name, int y) { const int colorSize = 12; GroupBox colorGroup = new GroupBox(this); colorGroup.SetPosition(10, y); colorGroup.SetText(name); colorGroup.SetSize(160, 35); colorGroup.Name = name + "groupbox"; ColorDisplay disp = new ColorDisplay(colorGroup); disp.Name = name; disp.SetBounds(0, 10, colorSize, colorSize); TextBoxNumeric numeric = new TextBoxNumeric(colorGroup); numeric.Name = name + "Box"; numeric.SetPosition(105, 7); numeric.SetSize(26, 16); numeric.SelectAllOnFocus = true; numeric.TextChanged += NumericTyped; HorizontalSlider slider = new HorizontalSlider(colorGroup); slider.SetPosition(colorSize + 5, 10); slider.SetRange(0, 255); slider.SetSize(80, colorSize); slider.Name = name + "Slider"; slider.ValueChanged += SlidersMoved; }
private void UpdateControls(Color color) { // [???] TODO: Make this code safer. // [halfofastaple] This code SHOULD (in theory) never crash/not work as intended, but referencing children by their name is unsafe. // Instead, a direct reference to their objects should be maintained. Worst case scenario, we grab the wrong "RedBox". TextBoxNumeric redBox = FindChildByName("RedBox", false) as TextBoxNumeric; if (redBox != null) { redBox.SetText(color.R.ToString(), false); } TextBoxNumeric greenBox = FindChildByName("GreenBox", false) as TextBoxNumeric; if (greenBox != null) { greenBox.SetText(color.G.ToString(), false); } TextBoxNumeric blueBox = FindChildByName("BlueBox", false) as TextBoxNumeric; if (blueBox != null) { blueBox.SetText(color.B.ToString(), false); } m_After.Color = color; if (ColorChanged != null) { ColorChanged.Invoke(this, EventArgs.Empty); } }
private void UpdateColorControls(string name, Color col, int sliderVal) { ColorDisplay disp = FindChildByName(name, true) as ColorDisplay; disp.Color = col; HorizontalSlider slider = FindChildByName(name + "Slider", true) as HorizontalSlider; slider.Value = sliderVal; TextBoxNumeric box = FindChildByName(name + "Box", true) as TextBoxNumeric; box.Value = sliderVal; }
private void NumericTyped(ControlBase control, EventArgs args) { TextBoxNumeric box = control as TextBoxNumeric; if (null == box) { return; } if (box.Text == string.Empty) { return; } int textValue = (int)box.Value; if (textValue < 0) { textValue = 0; } if (textValue > 255) { textValue = 255; } if (box.Name.Contains("Red")) { R = textValue; } if (box.Name.Contains("Green")) { G = textValue; } if (box.Name.Contains("Blue")) { B = textValue; } if (box.Name.Contains("Alpha")) { A = textValue; } UpdateControls(); }
private void NumericTyped(ControlBase control, EventArgs args) { TextBoxNumeric box = control as TextBoxNumeric; if (null == box) { return; } if (box.Text == String.Empty) { return; } int textValue = (int)box.Value; if (textValue < 0) { textValue = 0; } if (textValue > 255) { textValue = 255; } Color newColor = SelectedColor; if (box.Name.Contains("Red")) { newColor = Color.FromArgb(SelectedColor.A, textValue, SelectedColor.G, SelectedColor.B); } else if (box.Name.Contains("Green")) { newColor = Color.FromArgb(SelectedColor.A, SelectedColor.R, textValue, SelectedColor.B); } else if (box.Name.Contains("Blue")) { newColor = Color.FromArgb(SelectedColor.A, SelectedColor.R, SelectedColor.G, textValue); } else if (box.Name.Contains("Alpha")) { newColor = Color.FromArgb(textValue, SelectedColor.R, SelectedColor.G, SelectedColor.B); } SetColor(newColor); }
/// <summary> /// Initializes a new instance of the <see cref="HSVColorPicker"/> class. /// </summary> /// <param name="parent">Parent control.</param> public HSVColorPicker(ControlBase parent) : base(parent) { MouseInputEnabled = true; SetSize(256, 128); //ShouldCacheToTexture = true; m_LerpBox = new ColorLerpBox(this); m_LerpBox.ColorChanged += ColorBoxChanged; m_LerpBox.Dock = Pos.Left; m_ColorSlider = new ColorSlider(this); m_ColorSlider.SetPosition(m_LerpBox.Width + 15, 5); m_ColorSlider.ColorChanged += ColorSliderChanged; m_ColorSlider.Dock = Pos.Left; m_After = new ColorDisplay(this); m_After.SetSize(48, 24); m_After.SetPosition(m_ColorSlider.X + m_ColorSlider.Width + 15, 5); m_Before = new ColorDisplay(this); m_Before.SetSize(48, 24); m_Before.SetPosition(m_After.X, 28); int x = m_Before.X; int y = m_Before.Y + 30; { Label label = new Label(this); label.SetText("R:"); label.SizeToContents(); label.SetPosition(x, y); TextBoxNumeric numeric = new TextBoxNumeric(this); numeric.Name = "RedBox"; numeric.SetPosition(x + 15, y - 1); numeric.SetSize(26, 16); numeric.SelectAllOnFocus = true; numeric.TextChanged += NumericTyped; } y += 20; { Label label = new Label(this); label.SetText("G:"); label.SizeToContents(); label.SetPosition(x, y); TextBoxNumeric numeric = new TextBoxNumeric(this); numeric.Name = "GreenBox"; numeric.SetPosition(x + 15, y - 1); numeric.SetSize(26, 16); numeric.SelectAllOnFocus = true; numeric.TextChanged += NumericTyped; } y += 20; { Label label = new Label(this); label.SetText("B:"); label.SizeToContents(); label.SetPosition(x, y); TextBoxNumeric numeric = new TextBoxNumeric(this); numeric.Name = "BlueBox"; numeric.SetPosition(x + 15, y - 1); numeric.SetSize(26, 16); numeric.SelectAllOnFocus = true; numeric.TextChanged += NumericTyped; } SetColor(DefaultColor); }