/// <summary> /// Gets a color from RGB ratios /// </summary> /// <param name="value1"></param> /// <param name="value2"></param> /// <param name="value3"></param> /// <returns></returns> public static Color ColorFromRGBRatios(double value1, double value2, double value3) { int rValue; int gValue; int bValue; if (value3 == 0) { rValue = gValue = bValue = (int)(value2 * 255); } else { float value4; if (value2 <= 0.5) { value4 = (float)(value2 + (value2 * value3)); } else { value4 = (float)((value2 + value3) - (value2 * value3)); } float value5 = ((float)(2 * value2)) - value4; rValue = ColorServices.GetColorChannelValue(value5, value4, (float)(value1 + 120)); gValue = ColorServices.GetColorChannelValue(value5, value4, (float)value1); bValue = ColorServices.GetColorChannelValue(value5, value4, (float)(value1 - 120)); } return(Color.FromArgb(rValue, gValue, bValue)); }
public static Color ColorFromRGBRatios(double value1, double value2, double value3) { int blue; int green; int red; if (value3 == 0.0) { int num; blue = num = (int)(value2 * (double)byte.MaxValue); green = num; red = num; } else { float num1 = value2 > 0.5 ? (float)(value2 + value3 - value2 * value3) : (float)(value2 + value2 * value3); float num2 = (float)(2.0 * value2) - num1; red = ColorServices.GetColorChannelValue(num2, num1, (float)(value1 + 120.0)); green = ColorServices.GetColorChannelValue(num2, num1, (float)value1); blue = ColorServices.GetColorChannelValue(num2, num1, (float)(value1 - 120.0)); } return(Color.FromArgb(red, green, blue)); }