Значение вне диапазона с BitmapSource.Create

Работаем в WPF и пытаемся создать BitmapSource с нуля. Следующий код дает исключение аргумента "Значение не попадает в ожидаемый диапазон". Я не могу понять, почему. Я все еще новичок в WPF и, возможно, я не правильно использую формат пикселей?

int width = 12;
int height = 14;
byte[] colorData = new byte[width * height * 4];
for(int i = 0; i < colorData.Length; i++)
{
    colorData[i] = 155;  //create all pixels same shade of gray
}
BitmapSource bitmap = BitmapSource.Create(width, height, 96, 96, PixelFormats.Bgra32, null, colorData, width);

1 ответ

Решение

Последний аргумент BitmapSource.Create Метод - это шаг, т. е. количество байтов на "строку сканирования".

В случае пиксельного формата с четырьмя байтами на пиксель, это 4 * width:

var stride = 4 * width;
var bitmap = BitmapSource.Create(
    width, height, 96, 96, PixelFormats.Bgra32, null, colorData, stride);
Другие вопросы по тегам