GDI +: Установите все пиксели на данный цвет при сохранении существующего альфа-значения

Что лучший способ состоит в том, чтобы установить компоненты RGB каждого пикселя в a System.Drawing.Bitmap к единственному, сплошному цвету? Если возможно, я хотел бы избежать вручную цикличного выполнения через каждый пиксель, чтобы сделать это.

Примечание: Я хочу сохранить тот же альфа-компонент от исходного растрового изображения. Я только хочу изменить значения RGB.

Я изучил использование a ColorMatrix или ColorMap, но я не мог найти способ установить все пиксели на определенный данный цвет с любым подходом.

7
задан AakashM 24 March 2010 в 17:47
поделиться

2 ответа

Да, используйте ColorMatrix. Это должно выглядеть так:

  0  0  0  0  0
  0  0  0  0  0
  0  0  0  0  0 
  0  0  0  1  0 
  R  G  B  0  1

Где R, G и B - масштабированные значения цвета замещающего цвета (разделить на 255.0f)

14
ответ дан 6 December 2019 в 07:50
поделиться

Лучший (по крайней мере с точки зрения производительности) вариант - использовать Bitmap.LockBits и перебирать пиксельные данные в строке сканирования, задав значения RGB.

Поскольку вы не хотите изменять альфа-канал, вам придется перебирать каждый пиксель в цикле - нет единого назначения памяти, которое сохраняло бы альфа-канал и заменяло RGB, поскольку они чередуются вместе.

2
ответ дан 6 December 2019 в 07:50
поделиться
Другие вопросы по тегам:

Похожие вопросы: