Значение вне диапазона с 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);