Инвертировать цвета на WinForms - PullRequest
2 голосов
/ 23 января 2012

В этом случае, если я хочу инвертировать цвета, используя этот метод, как бы я это сделал? Я знаю, что мне нужно вычесть 255 (но место, где я делаю это, очевидно, неправильно. Оно просто дает мне шкалу серого, которую я не хочу)

        for (int x = 0; x < bmp.Width; x++)
        {
            //set the new image's pixel to the invert version

            nRow[x * pixelSize] = (byte)(255 - nRow[x + 0]); //B
            nRow[x * pixelSize + 1] = (byte)(255 - nRow[x + 1]); //G
            nRow[x * pixelSize + 2] = (byte)(255 - nRow[x + 2]); //R
        }

Ответы [ 2 ]

2 голосов
/ 23 января 2012

Попробуйте это:

        nRow[x * pixelSize] = (byte)(255 - oRow[x * pixelSize + 0]); //B
        nRow[x * pixelSize + 1] = (byte)(255 - oRow[x * pixelSize + 1]); //G
        nRow[x * pixelSize + 2] = (byte)(255 - oRow[x * pixelSize + 2]); //R
1 голос
/ 23 января 2012

Вы должны изменить свое вычитание на это

             for (int x = 0; x < bmp.Width; x++)
            {
                //set the new image's pixel to the invert version

                nRow[x * pixelSize] = (byte)(255 - oRow[x]); //changed from nRow to oRow
                //you subtracted every line three times?
            }

Насколько я вижу, вы вычли новое изображение из нового изображения;)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...