private void UserControl_Loaded(object sender, RoutedEventArgs e) { if (Tag != null) { Cmd[] cmd = (Tag as Eqlogic).cmds; Cmd commande = cmd.GetCmd("luminosity_state"); if (commande != null && !commande.state.Equals("0")) { commande = cmd.GetCmd("color_state"); ColorHue = Colors.Transparent; SwitchOn = HSBColor.HexToColor(commande.state); } else { ColorHue = Colors.Transparent; SwitchOn = Colors.Transparent; } } }
public static Color FromHSB(HSBColor hsbColor) { float r = hsbColor.b; float g = hsbColor.b; float b = hsbColor.b; if (hsbColor.s != 0) { float max = hsbColor.b; float dif = hsbColor.b * hsbColor.s / 255f; float min = hsbColor.b - dif; float h = hsbColor.h * 360f / 255f; if (h < 60f) { r = max; g = h * dif / 60f + min; b = min; } else if (h < 120f) { r = -(h - 120f) * dif / 60f + min; g = max; b = min; } else if (h < 180f) { r = min; g = max; b = (h - 120f) * dif / 60f + min; } else if (h < 240f) { r = min; g = -(h - 240f) * dif / 60f + min; b = max; } else if (h < 300f) { r = (h - 240f) * dif / 60f + min; g = min; b = max; } else if (h <= 360f) { r = max; g = min; b = -(h - 360f) * dif / 60 + min; } else { r = 0; g = 0; b = 0; } } return(Color.FromArgb ( (byte)hsbColor.a, (byte)Math.Round(Math.Min(Math.Max(r, 0), 255)), (byte)Math.Round(Math.Min(Math.Max(g, 0), 255)), (byte)Math.Round(Math.Min(Math.Max(b, 0), 255)) )); }