使用BitmapSource.Create超出范围的值

时间:2016-07-11 16:34:26

标签: c# wpf bytearray bitmapsource

在WPF中工作并尝试从头开始创建BitmapSource。以下代码给出了一个Argument Exception"价值不在预期范围内。"我无法弄清楚原因。我还不熟悉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 个答案:

答案 0 :(得分:2)

BitmapSource.Create方法的最后一个参数是 stride ,即每个&#34;扫描线&#34;的字节数。

如果像素格式每像素有四个字节,则为4 * width

var stride = 4 * width;
var bitmap = BitmapSource.Create(
    width, height, 96, 96, PixelFormats.Bgra32, null, colorData, stride);