Beispiel #1
0
        void Sum(ECHANEL chanel, byte[] bgraValues, ref byte[] bgraValues1)
        {
            for (var i = 0; i < bgraValues1.Length; i += 4)
            {
                int result = 0;
                switch (chanel)
                {
                case ECHANEL.RGB:
                    result             = bgraValues[i] + bgraValues1[i];
                    bgraValues1[i]     = Convert.ToByte(Normalize(result));
                    result             = bgraValues[i + 1] + bgraValues1[i + 1];
                    bgraValues1[i + 1] = Convert.ToByte(Normalize(result));
                    result             = bgraValues[i + 2] + bgraValues1[i + 2];
                    bgraValues1[i + 2] = Convert.ToByte(Normalize(result));
                    break;

                case ECHANEL.RG:
                    result             = bgraValues[i + 1] + bgraValues1[i + 1];
                    bgraValues1[i + 1] = Convert.ToByte(Normalize(result));
                    result             = bgraValues[i + 2] + bgraValues1[i + 2];
                    bgraValues1[i + 2] = Convert.ToByte(Normalize(result));
                    break;

                case ECHANEL.RB:
                    result             = bgraValues[i] + bgraValues1[i];
                    bgraValues1[i]     = Convert.ToByte(Normalize(result));
                    result             = bgraValues[i + 2] + bgraValues1[i + 2];
                    bgraValues1[i + 2] = Convert.ToByte(Normalize(result));
                    break;

                case ECHANEL.GB:
                    result             = bgraValues[i] + bgraValues1[i];
                    bgraValues1[i]     = Convert.ToByte(Normalize(result));
                    result             = bgraValues[i + 1] + bgraValues1[i + 1];
                    bgraValues1[i + 1] = Convert.ToByte(Normalize(result));
                    break;

                case ECHANEL.R:
                    result             = bgraValues[i + 2] + bgraValues1[i + 2];
                    bgraValues1[i + 2] = Convert.ToByte(Normalize(result));
                    break;

                case ECHANEL.G:
                    result             = bgraValues[i + 1] - bgraValues1[i + 1];
                    bgraValues1[i + 1] = Convert.ToByte(Normalize(result));
                    break;

                case ECHANEL.B:
                    result         = bgraValues[i] + bgraValues1[i];
                    bgraValues1[i] = Convert.ToByte(Normalize(result));
                    break;
                }
            }
        }
Beispiel #2
0
        void No(ECHANEL chanel, byte[] bgraValues, ref byte[] bgraValues1)
        {
            for (var i = 0; i < bgraValues1.Length; i += 4)
            {
                switch (chanel)
                {
                case ECHANEL.RGB:
                    bgraValues1[i]     = bgraValues[i];
                    bgraValues1[i + 1] = bgraValues[i + 1];
                    bgraValues1[i + 2] = bgraValues[i + 2];
                    break;

                case ECHANEL.RG:
                    bgraValues1[i + 1] = bgraValues[i + 1];
                    bgraValues1[i + 2] = bgraValues[i + 2];
                    break;

                case ECHANEL.RB:
                    bgraValues1[i]     = bgraValues[i];
                    bgraValues1[i + 2] = bgraValues[i + 2];
                    break;

                case ECHANEL.GB:
                    bgraValues1[i]     = bgraValues[i];
                    bgraValues1[i + 1] = bgraValues[i + 1];
                    break;

                case ECHANEL.R:
                    bgraValues1[i + 2] = bgraValues[i + 2];
                    break;

                case ECHANEL.G:
                    bgraValues1[i + 1] = bgraValues[i + 1];
                    break;

                case ECHANEL.B:
                    bgraValues1[i] = bgraValues[i];
                    break;
                }
            }
        }