Пример #1
0
        public void FromXYZ(XYZ color)
        {
            isOut = false;

            double rn = 3.2406 * color.X + -1.5372 * color.Y + -0.4986 * color.Z;
            double gn = -0.9689 * color.X + 1.8758 * color.Y + 0.0415 * color.Z;
            double bn = 0.0557 * color.X + -0.2040 * color.Y + 1.0570 * color.Z;

            r = (int)Math.Ceiling(F(rn) * 255);
            g = (int)Math.Ceiling(F(gn) * 255);
            b = (int)Math.Ceiling(F(bn) * 255);

            if (r < 0)
            {
                r     = 0;
                isOut = true;
            }

            if (g < 0)
            {
                g     = 0;
                isOut = true;
            }

            if (b < 0)
            {
                b     = 0;
                isOut = true;
            }


            if (r > 255)
            {
                r     = 255;
                isOut = true;
            }
            if (g > 255)
            {
                g     = 255;
                isOut = true;
            }
            if (b > 255)
            {
                b     = 255;
                isOut = true;
            }



            if (isOut)
            {
                ShowMessage?.Invoke(null, null);
            }
            else
            {
                DisableMessage?.Invoke(null, null);
            }

            ColorMustUpdate?.Invoke(null, null);
        }
Пример #2
0
        public void FromCMYK(CMYK color)
        {
            r = (int)Math.Ceiling(255 * (1 - color.C) * (1 - color.K));
            g = (int)Math.Ceiling(255 * (1 - color.M) * (1 - color.K));
            b = (int)Math.Ceiling(255 * (1 - color.Y) * (1 - color.K));

            ColorMustUpdate?.Invoke(null, null);
        }
Пример #3
0
        public void FromRGB(RGB color)
        {
            double rn = F(color.R / 255d) * 100;
            double gn = F(color.G / 255d) * 100;
            double bn = F(color.B / 255d) * 100;

            x = 0.412453 * rn + 0.357580 * gn + 0.180423 * bn;
            y = 0.212671 * rn + 0.715160 * gn + 0.072169 * bn;
            z = 0.019334 * rn + 0.119193 * gn + 0.950227 * bn;

            ColorMustUpdate?.Invoke(null, null);
        }
Пример #4
0
        public void FromRGB(RGB color)
        {
            if (color.R == 0 && color.G == 0 && color.B == 0)
            {
                return;
            }

            k = new double[] { 1 - color.R / 255d, 1 - color.G / 255d, 1 - color.B / 255d }.Min();
            c = (1 - color.R / 255d - K) / (1 - K);
            m = (1 - color.G / 255d - K) / (1 - K);
            y = (1 - color.B / 255d - K) / (1 - K);

            ColorMustUpdate?.Invoke(null, null);
        }