Как задать цвет пикселям?

270
04 апреля 2017, 09:08
TextureBrush NoiseBrush(Color[] colors)
{
  Bitmap b = new Bitmap(128, 128);
  Random r = new Random(128);
  for (int x = 0; x <= b.Width - 1; x++) 
 {
  for (int y = 0; y <= b.Height - 1; y++) 
  {
    b.SetPixel(x, y, colors(r.Next(colors.Length)));
  }
}
TextureBrush T = new TextureBrush(b);
b.Dispose();
return T;
}

Мне выдаёт ошибку:

"colors" является "переменная", но используется как "метод"

Решение: b.SetPixel(x, y, colors[r.Next(colors.Length)]);

Обновление

Теперь когда пытаюсь вызвать его у меня не получается присвоить цвет:

TextureBrush bodygb = NoiseBrush(
{
  Color.FromArgb(34, 29, 23),
  Color.FromArgb(50, 45, 39)
});

Как через массив добавить цвет?

Answer 1

Ответ на обновление: например, так:

TextureBrush bodygb = NoiseBrush(
    new[]
    {
        Color.FromArgb(34, 29, 23),
        Color.FromArgb(50, 45, 39)
    });

Альтернативно, если метод NoiseBrush описать так:

TextureBrush NoiseBrush(params Color[] colors)

то можно будет вызывать проще:

TextureBrush bodygb = NoiseBrush(
    Color.FromArgb(34, 29, 23),
    Color.FromArgb(50, 45, 39));

Ещё одна проблема с вашим кодом — использование Random. Вы используете всё время одно и тоже значение seed, а значит, результат будет всё время одинаковым. Лучше сделать так: объявить вне метода

static Random r = new Random();

и удалить создание Random в методе.

READ ALSO
Область влияния переменных в c#?

Область влияния переменных в c#?

Я немного запутался, вот есть два куска кода, в котором в одном из них поле помечено модификатором static -значит оно глобальное и объявлено...

309
Отсутствует шаблон для WPF4 в MVVM Light

Отсутствует шаблон для WPF4 в MVVM Light

скачал и установил MVVM Light V52

218
Выбор паттерна проектирования WCF

Выбор паттерна проектирования WCF

Есть следующая задача: Приложение A посылает приложению B данныеПриложение B эти данные получает и уведомляет приложение A, после чего осуществляет...

218
Prism 4.1 инициализация

Prism 4.1 инициализация

Установил призму 41 (ФВ 4

216