1

我想从byte[]我手动创建的图像中创建一个图像,但出现 JIT 错误

System.ArgumentException: Parameter is not valid.
at System.Drawing.Image.FromStream(Stream stream, Boolean useEmbeddedColorManagement, Boolean validateImageData)
   at CreateBitmapFromStream.Form1.Form1_Load(Object sender, EventArgs e) in c:\Data\C#-Workspace\CreateBitmapFromStream\CreateBitmapFromStream\Form1.cs:line 35
   at System.Windows.Forms.Form.OnLoad(EventArgs e)
...

这是我的代码:

private void Form1_Load(object sender, EventArgs e)
{
  var data = new byte[20*10];
  for (int i = 0; i < data.Length; i++)
  {
    if (i < 100)
      data[i] = 0x15;
    else
      data[i] = 0x99;
  }

  using (var ms = new MemoryStream(data))
  {
    var img = Image.FromStream(ms, true, true);  
    panel1.BackgroundImage = img;
  }
}

我究竟做错了什么?

4

2 回答 2

0

图像是根据某种格式构建的。

它不仅仅是一个像素序列。如果要绘制像素,请使用Bitmap提供的类System.Drawing

Bitmap b = new Bitmap(1, 1);
b.SetPixel(0, 0, Color.Gray);
于 2013-08-09T10:51:47.940 回答
0

如果你想生成图像,你应该使用 BitmapData 类。使用 BitmapData,您可以将像素数据写入位图/图像。

这是一个示例:http: //msdn.microsoft.com/en-us/library/system.drawing.imaging.bitmapdata.scan0.aspx

于 2013-08-09T10:52:03.233 回答