/// <summary> /// HSVからRGBへ変換を行う /// </summary> /// <param name="hsv">HSVカラー</param> /// <param name="alpha">アルファ値(0≦alpha≦255)</param> /// <returns>RGBカラーが返る</returns> public static Color ConvertHSVtoRGB(ColorHSV hsv, byte alpha) { int h = (Convert.ToInt32(hsv.Hue) / 60) % 6; int v = Convert.ToInt32(hsv.Value * 255.0f); int p = Convert.ToInt32((hsv.Value * (1.0f - hsv.Saturation)) * 255.0f); int q = Convert.ToInt32(hsv.Value * (1.0f - hsv.Saturation * (hsv.Hue - h * 60.0f) / 60.0f) * 255.0f); int t = Convert.ToInt32(hsv.Value * (1.0f - hsv.Saturation * ((h + 1.0f) * 60.0f - hsv.Hue) / 60.0f) * 255.0f); if ((hsv.Hue >= 0) && (hsv.Hue < 60)) { return(ColorUtility.GetColor(alpha, v, t, p)); } else if ((hsv.Hue >= 60) && (hsv.Hue < 120)) { return(ColorUtility.GetColor(alpha, q, v, p)); } else if ((hsv.Hue >= 120) && (hsv.Hue < 180)) { return(ColorUtility.GetColor(alpha, p, v, t)); } else if ((hsv.Hue >= 180) && (hsv.Hue < 240)) { return(ColorUtility.GetColor(alpha, p, q, v)); } else if ((hsv.Hue >= 240) && (hsv.Hue < 300)) { return(ColorUtility.GetColor(alpha, t, p, v)); } else if ((hsv.Hue >= 300) && (hsv.Hue < 360)) { return(ColorUtility.GetColor(alpha, v, p, q)); } else { return(ColorUtility.GetColor(alpha, 0, 0, 0)); } }
/// <summary> /// colorで指定される色をmodifyToの色相に変更させる。 /// </summary> /// <param name="color">色</param> /// <param name="modifyTo">変更先の色</param> /// <returns>変化させた色</returns> public static Color MonoricColor(Color color, Color modifyTo) { ColorHSV newHsv = ColorConverter.ConvertRGBtoHSV(modifyTo); return(MonoricColor(color, newHsv.Hue)); }
/// <summary> /// HSVからRGBへ変換を行う /// </summary> /// <param name="hsv">HSVカラー</param> /// <param name="alpha">アルファ値(0≦alpha≦1.0)</param> /// <returns>RGBカラーが返る</returns> public static Color ConvertHSVtoRGB(ColorHSV hsv, float alpha) { int a = ColorUtility.Clamp(Convert.ToInt32(alpha * 255.0f), 0, 255); return(ConvertHSVtoRGB(hsv, (byte)(a))); }
/// <summary> /// HSVからRGBへ変換を行う /// </summary> /// <param name="hsv">HSVカラー</param> /// <returns>RGBカラーが返る</returns> public static Color ConvertHSVtoRGB(ColorHSV hsv) => ConvertHSVtoRGB(hsv, hsv.Alpha);