public static Cmyk CreateFrom(byte red, byte green, byte blue) { Cmyk cmyk = new Cmyk(); //cmyk.C = (byte)(255 - red); //cmyk.M = (byte)(255 - green); //cmyk.Y = (byte)(255 - blue); //cmyk.K = (byte)Math.Min(Math.Min(cmyk.C, cmyk.M), cmyk.Y); //cmyk.C = (byte)(cmyk.C - cmyk.K); //cmyk.M = (byte)(cmyk.M - cmyk.K); //cmyk.Y = (byte)(cmyk.Y - cmyk.K); //return cmyk; cmyk.K = (byte)(Math.Min(Math.Min(255 - red, 255 - green), 255 - blue) / 2.55); int MyR = (int)(red / 2.55); int Div = 100 - cmyk.K; if (Div <= 0) { Div = 1; } cmyk.C = (byte)(100 * (100 - MyR - cmyk.K) / Div); int MyG = (int)(green / 2.55); cmyk.M = (byte)(100 * (100 - MyG - cmyk.K) / Div); int MyB = (int)(blue / 2.55); cmyk.Y = (byte)(100 * (100 - MyB - cmyk.K) / Div); return(cmyk); }
public static Cmyk CreateFrom(byte red, byte green, byte blue) { Cmyk cmyk = new Cmyk(); //cmyk.C = (byte)(255 - red); //cmyk.M = (byte)(255 - green); //cmyk.Y = (byte)(255 - blue); //cmyk.K = (byte)Math.Min(Math.Min(cmyk.C, cmyk.M), cmyk.Y); //cmyk.C = (byte)(cmyk.C - cmyk.K); //cmyk.M = (byte)(cmyk.M - cmyk.K); //cmyk.Y = (byte)(cmyk.Y - cmyk.K); //return cmyk; cmyk.K = (byte)(Math.Min(Math.Min(255 - red, 255 - green), 255 - blue) / 2.55); int MyR = (int)(red / 2.55); int Div = 100 - cmyk.K; if (Div <= 0) Div = 1; cmyk.C = (byte)(100 * (100 - MyR - cmyk.K) / Div); int MyG = (int)(green / 2.55); cmyk.M = (byte)(100 * (100 - MyG - cmyk.K) / Div); int MyB = (int)(blue / 2.55); cmyk.Y = (byte)(100 * (100 - MyB - cmyk.K) / Div); return cmyk; }