/// <summary> /// Creates from a given color. /// </summary> /// <param name="color">The color.</param> /// <returns></returns> public static RgbColor FromHsbColor( HsbColor color) { return(color.ToRgbColor()); }
/// <summary> /// Converts <see cref="HsbColor"/> to <see cref="RgbColor"/>. /// </summary> /// <param name="hsb">The <see cref="HsbColor"/>.</param> /// <returns>A <see cref="RgbColor"/> equivalent.</returns> public static RgbColor HsbToRgb( HsbColor hsb ) { double red = 0, green = 0, blue = 0; double h = hsb.Hue; double s = ((double)hsb.Saturation) / 100; double b = ((double)hsb.Brightness) / 100; if ( s == 0 ) { red = b; green = b; blue = b; } else { // the color wheel has six sectors. double sectorPosition = h / 60; var sectorNumber = (int)Math.Floor( sectorPosition ); double fractionalSector = sectorPosition - sectorNumber; double p = b * (1 - s); double q = b * (1 - (s * fractionalSector)); double t = b * (1 - (s * (1 - fractionalSector))); // Assign the fractional colors to r, g, and b // based on the sector the angle is in. switch ( sectorNumber ) { case 0: red = b; green = t; blue = p; break; case 1: red = q; green = b; blue = p; break; case 2: red = p; green = b; blue = t; break; case 3: red = p; green = q; blue = b; break; case 4: red = t; green = p; blue = b; break; case 5: red = b; green = p; blue = q; break; } } var nRed = (int)Math.Round( red * 255 ); var nGreen = (int)Math.Round( green * 255 ); var nBlue = (int)Math.Round( blue * 255 ); return new RgbColor( nRed, nGreen, nBlue ); }
/// <summary> /// Creates from a given color. /// </summary> /// <param name="color">The color.</param> /// <returns></returns> public static HslColor FromHsbColor( HsbColor color ) { return FromRgbColor( color.ToRgbColor() ); }
/// <summary> /// Converts <see cref="HsbColor"/> to <see cref="RgbColor"/>. /// </summary> /// <param name="hsb">The <see cref="HsbColor"/>.</param> /// <returns>A <see cref="RgbColor"/> equivalent.</returns> public static RgbColor HsbToRgb( HsbColor hsb) { double red = 0, green = 0, blue = 0; double h = hsb.Hue; double s = ((double)hsb.Saturation) / 100; double b = ((double)hsb.Brightness) / 100; if (s == 0) { red = b; green = b; blue = b; } else { // the color wheel has six sectors. double sectorPosition = h / 60; var sectorNumber = (int)Math.Floor(sectorPosition); double fractionalSector = sectorPosition - sectorNumber; double p = b * (1 - s); double q = b * (1 - (s * fractionalSector)); double t = b * (1 - (s * (1 - fractionalSector))); // Assign the fractional colors to r, g, and b // based on the sector the angle is in. switch (sectorNumber) { case 0: red = b; green = t; blue = p; break; case 1: red = q; green = b; blue = p; break; case 2: red = p; green = b; blue = t; break; case 3: red = p; green = q; blue = b; break; case 4: red = t; green = p; blue = b; break; case 5: red = b; green = p; blue = q; break; } } var nRed = (int)Math.Round(red * 255); var nGreen = (int)Math.Round(green * 255); var nBlue = (int)Math.Round(blue * 255); return(new RgbColor(nRed, nGreen, nBlue)); }
/// <summary> /// Creates from a given color. /// </summary> /// <param name="color">The color.</param> /// <returns></returns> public static HsbColor FromHsbColor( HsbColor color) { return(new HsbColor(color.Hue, color.Saturation, color.Brightness)); }
/// <summary> /// Creates from a given color. /// </summary> /// <param name="color">The color.</param> /// <returns></returns> public static RgbColor FromHsbColor( HsbColor color ) { return color.ToRgbColor(); }
/// <summary> /// Creates from a given color. /// </summary> /// <param name="color">The color.</param> /// <returns></returns> public static HslColor FromHsbColor( HsbColor color) { return(FromRgbColor(color.ToRgbColor())); }
/// <summary> /// Creates from a given color. /// </summary> /// <param name="color">The color.</param> /// <returns></returns> public static HsbColor FromHsbColor( HsbColor color ) { return new HsbColor( color.Hue, color.Saturation, color.Brightness ); }