private static Bitmap ConvertArrayToBitmap(ushort[][,] array)
{
int width = array[0].GetLength(0);
int height = array[0].GetLength(1);
Bitmap bmp = new Bitmap(width, height, PixelFormat.Format32bppArgb);
BitmapData bd = bmp.LockBits(new Rectangle(0, 0, width, height), ImageLockMode.WriteOnly, PixelFormat.Format32bppArgb);
int nOffset = (bd.Stride - bd.Width * 4);
unsafe
{
byte* p = (byte*)bd.Scan0;
for (int y = 0; y < height; y++)
{
for (int x = 0; x < width; x++)
{
p[3] = (byte)Math.Min(Math.Max(array[3][x, y], Byte.MinValue), Byte.MaxValue);
p[2] = (byte)Math.Min(Math.Max(array[2][x, y], Byte.MinValue), Byte.MaxValue);
p[1] = (byte)Math.Min(Math.Max(array[1][x, y], Byte.MinValue), Byte.MaxValue);
p[0] = (byte)Math.Min(Math.Max(array[0][x, y], Byte.MinValue), Byte.MaxValue);
p += 4;
}
p += nOffset;
}
}
bmp.UnlockBits(bd);
return bmp;
}