#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)).