Example #1
0
        /// <summary>
        /// Get a color between 2 color (ie gradiant step)
        /// </summary>
        /// <param name="s">Start Color </param>
        /// <param name="e">End Color</param>
        /// <param name="clamp">Intyerpolation factor : clamp [0,1]</param>
        /// <param name="useHSB">Use USB convertion to compute interpolation</param>
        /// <returns></returns>
        public static Color GetStepColor(this Color s, Color e, double clamp, bool useHSB)
        {
            double t = Math.Min(Math.Max(clamp, 0), 1);

            if (useHSB)
            {
                ColorHSB sHSB = ColorHSB.FromRGB(s);
                ColorHSB eHSB = ColorHSB.FromRGB(e);
                double   dH   = sHSB.Hue - eHSB.Hue;
                double   dS   = sHSB.Saturation - eHSB.Saturation;
                double   dB   = sHSB.Brightness - eHSB.Brightness;
                ColorHSB mHSB = new ColorHSB();
                mHSB.Hue        = sHSB.Hue - t * dH;
                mHSB.Saturation = sHSB.Saturation - t * dS;
                mHSB.Brightness = sHSB.Brightness - t * dB;
                Color ret = mHSB.ToColor();
                return(ret);
            }
            else
            {
                double dR  = s.R - e.R;
                double dG  = s.G - e.G;
                double dB  = s.B - e.B;
                double r   = s.R - t * dR;
                double g   = s.G - t * dG;
                double b   = s.B - t * dB;
                Color  ret = Color.FromArgb((int)r, (int)g, (int)b);
                return(ret);
            }
        }
Example #2
0
        /// <summary>
        /// Modifies an existing Hue level
        /// </summary>
        /// <remarks>
        /// To reduce Hue use a number smaller than 1. To increase Hue use a number larger tnan 1
        /// </remarks>
        /// <param name="c">The original colour</param>
        /// <param name="Hue">The Hue delta</param>
        /// <returns>An adjusted colour</returns>
        public static Color ModifyHue(this Color c, double Hue)
        {
            ColorHSB hsb = ColorHSB.FromRGB(c);

            hsb.Hue *= Hue;
            return(hsb.ToColor());
        }
Example #3
0
        /// <summary>
        /// Modifies an existing Saturation level
        /// </summary>
        /// <remarks>
        /// To reduce Saturation use a number smaller than 1. To increase Saturation use a number larger tnan 1
        /// </remarks>
        /// <param name="c">The original colour</param>
        /// <param name="Saturation">The saturation delta</param>
        /// <returns>An adjusted colour</returns>
        public static Color ModifySaturation(this Color c, double Saturation)
        {
            ColorHSB hsb = ColorHSB.FromRGB(c);

            hsb.Saturation *= Saturation;
            return(hsb.ToColor());
        }
Example #4
0
        /// <summary>
        /// Modifies an existing brightness level
        /// </summary>
        /// <param name="c">The original colour</param>
        /// <param name="brightness">The luminance delta</param>
        /// <returns>An adjusted colour</returns>
        public static Color ModifyBrightness(this Color c, double brightness)
        {
            ColorHSB hsb = ColorHSB.FromRGB(c);

            hsb.Brightness *= (1 + brightness);
            return(hsb.ToColor());
        }
Example #5
0
        /// <summary>
        /// Sets the absolute brightness of a colour
        /// </summary>
        /// <param name="c">Original colour</param>
        /// <param name="brightness">The luminance level to impose</param>
        /// <returns>an adjusted colour</returns>
        public static Color SetBrightness(this Color c, double brightness)
        {
            ColorHSB hsb = ColorHSB.FromRGB(c);

            hsb.Brightness = brightness;
            return(hsb.ToColor());
        }
Example #6
0
        /// <summary>
        /// Converts RGB to ColorHSB
        /// </summary>
        /// <remarks>Takes advantage of whats already built in to .NET by using the Color.GetHue, Color.GetSaturation and Color.GetBrightness methods</remarks>
        /// <param name="c">A Color to convert</param>
        /// <returns>An ColorHSB value</returns>
        internal static ColorHSB FromRGB(Color c)
        {
            ColorHSB hsb = new ColorHSB();

            hsb.Hue        = c.GetHue() / 360.0;      // we store hue as 0-1 as opposed to 0-360
            hsb.Brightness = c.GetBrightness();
            hsb.Saturation = c.GetSaturation();

            return(hsb);
        }