Усиление цветов RGB с помощью c#

#c# #bitmap #rgb

#c# #растровое изображение #rgb

Вопрос:

Мне нужно усилить канал / цвета RGB с номером, который может выбрать пользователь. У меня есть следующий код, но я не уверен, что он правильный. Может кто-нибудь сказать мне, что я могу изменить или сделать лучше.

 int value = int.Parse(textBoxConstante.Text);

for (int y = 0; y < myPic.Height; y  )
{
    for (int x = 0; x < myPic.Width; x  )
    {
        Color c = myPic.GetPixel(x, y);
        myPic.SetPixel(x, y, Color.FromArgb(c.R * value /10, c.G * value/10, c.B * value/10));
    }
}
  

Комментарии:

1. Повысить контрастность ?! Что вы хотите сделать на простом английском?

2. Каков был результат при запуске этого кода?

3. @Jonas Moens — Он компилируется и работает нормально, в чем проблема?

4. Мы не сможем улучшить его, если не будем знать, для чего он предназначен. В нынешнем виде это лучший пример изменения цвета изображения по пикселям на десятую часть заданного множителя, который я КОГДА- ЛИБО видел!

5. @Oded, цвета RGB должны быть умножены на значение, выбранное пользователем .. в моем коде это значение равно ‘int value’

Ответ №1:

Я не запускал ваш код, но подозреваю, что у вас проблемы с отсутствием в c # неявного двойного приведения… Попробуйте переписать его таким образом:

 .FromArgb((int)(c.R * ((double)value /10)), [the rest wrapped the same way]
  

Комментарии:

1. Я предпочитаю суффикс ‘d’ в 10 ((int)(c.R * (значение / 10d)).