Exemple #1
0
        protected override void OnValueChanged(double oldValue, double newValue)
        {
            base.OnValueChanged(oldValue, newValue);

            Color color = HsvColor.RGBFromHSV(new HsvColor(359 - newValue, 1, 1));

            SelectedColor = color;
        }
Exemple #2
0
        /// <summary>
        /// Updates the currently selected color in the color canvas
        /// from the given HSV parameters.
        /// </summary>
        /// <param name="hue"></param>
        /// <param name="saturation"></param>
        /// <param name="value"></param>
        private void UpdateSelectedColorFromHSV(double hue,
                                                double saturation,
                                                double value)
        {
            var color = HsvColor.RGBFromHSV(new HsvColor(hue, saturation, value));

            UpdateRGBValues(Color.FromArgb(A, color.R, color.G, color.B));
            UpdateSelectedColor();
        }
Exemple #3
0
        protected override void OnValueChanged(double oldValue, double newValue)
        {
            base.OnValueChanged(oldValue, newValue);

//            Color color = ColorUtilities.ConvertHsvToRgb(360 - newValue, 1, 1);
            Color color = HsvColor.RGBFromHSV(new HsvColor(360 - newValue, 1, 1));

            SelectedColor = color;
        }
Exemple #4
0
        private void CalculateColor(Point p)
        {
            HsvColor hsv = new HsvColor(359 - _spectrumSlider.Value, p.X, 1 - p.Y);

            //            var currentColor = ColorUtilities.ConvertHsvToRgb(hsv.Hue, hsv.Saturation, hsv.Value);
            var currentColor = HsvColor.RGBFromHSV(hsv);

            currentColor.A = A;
            SelectedColor  = currentColor;
            string newColor = ColorUtilities.GetFormatedColorString(SelectedColor, UsingAlphaChannel);

            SetHexadecimalStringProperty(newColor, false);
        }
Exemple #5
0
/*** Replaced with static converter code in HsvColor class
 *      /// <summary>
 *      /// Converts an RGB color to an HSV color.
 *      /// </summary>
 *      /// <param name="r"></param>
 *      /// <param name="b"></param>
 *      /// <param name="g"></param>
 *      /// <returns></returns>
 *      public static HsvColor ConvertRgbToHsv(int r, int b, int g)
 *      {
 *          double delta, min;
 *          double h = 0, s, v;
 *
 *          min = Math.Min(Math.Min(r, g), b);
 *          v = Math.Max(Math.Max(r, g), b);
 *          delta = v - min;
 *
 *          if (v == 0.0)
 *          {
 *              s = 0;
 *          }
 *          else
 *              s = delta / v;
 *
 *          if (s == 0)
 *              h = 0.0;
 *
 *          else
 *          {
 *              if (r == v)
 *                  h = (g - b) / delta;
 *              else if (g == v)
 *                  h = 2 + (b - r) / delta;
 *              else if (b == v)
 *                  h = 4 + (r - g) / delta;
 *
 *              h *= 60;
 *              if (h < 0.0)
 *                  h = h + 360;
 *
 *          }
 *
 *          return new HsvColor( h, s, v / 255);
 *      }
 *
 *      /// <summary>
 *      ///  Converts an HSV color to an RGB color.
 *      /// </summary>
 *      /// <param name="h"></param>
 *      /// <param name="s"></param>
 *      /// <param name="v"></param>
 *      /// <returns></returns>
 *      public static Color ConvertHsvToRgb(double h, double s, double v)
 *      {
 *          double r = 0, g = 0, b = 0;
 *
 *          if (s == 0)
 *          {
 *              r = v;
 *              g = v;
 *              b = v;
 *          }
 *          else
 *          {
 *              int i;
 *              double f, p, q, t;
 *
 *              if (h == 360)
 *                  h = 0;
 *              else
 *                  h = h / 60;
 *
 *              i = (int)Math.Truncate(h);
 *              f = h - i;
 *
 *              p = v * (1.0 - s);
 *              q = v * (1.0 - (s * f));
 *              t = v * (1.0 - (s * (1.0 - f)));
 *
 *              switch (i)
 *              {
 *                  case 0:
 *                      {
 *                          r = v;
 *                          g = t;
 *                          b = p;
 *                          break;
 *                      }
 *                  case 1:
 *                      {
 *                          r = q;
 *                          g = v;
 *                          b = p;
 *                          break;
 *                      }
 *                  case 2:
 *                      {
 *                          r = p;
 *                          g = v;
 *                          b = t;
 *                          break;
 *                      }
 *                  case 3:
 *                      {
 *                          r = p;
 *                          g = q;
 *                          b = v;
 *                          break;
 *                      }
 *                  case 4:
 *                      {
 *                          r = t;
 *                          g = p;
 *                          b = v;
 *                          break;
 *                      }
 *                  default:
 *                      {
 *                          r = v;
 *                          g = p;
 *                          b = q;
 *                          break;
 *                      }
 *              }
 *
 *          }
 *
 *          return Color.FromArgb(255, (byte)(Math.Round(r * 255)), (byte)(Math.Round(g * 255)), (byte)(Math.Round(b * 255)));
 *      }
 ***/
        /// <summary>
        /// Generates a list of colors with hues ranging from 0 to 360 and
        /// a saturation and value of 1.
        /// </summary>
        /// <returns></returns>
        public static List <Color> GenerateHsvSpectrum()
        {
            List <Color> colorsList = new List <Color>(8);

            // list of colors with hues ranging from 0 to 360
            for (int i = 0; i < 29; i++)
            {
//                colorsList.Add(ColorUtilities.ConvertHsvToRgb(i * 12, 1, 1));
                colorsList.Add(HsvColor.RGBFromHSV(new HsvColor(i * 12, 1, 1)));
            }

            // saturation and value of 1
//            colorsList.Add(ColorUtilities.ConvertHsvToRgb(0, 1, 1));
            colorsList.Add(HsvColor.RGBFromHSV(new HsvColor(0, 1, 1)));

            return(colorsList);
        }