R == red, G == green, B == blue, A == α 控制图像透明度的,0代表透明
Color imagColor = Color.FromArgb(alpha, red, green, blue); // alpha, red, green, blue 为int
bkImage.SetPixel(x, y, imagColor); // bkImage 为 Bitmap
ColorFrame是Kinect彩色摄像头返回的一帧的图像格式,在使用的时候都要利用CopyPixelDataTo()方法,将信息存入byte[],也就是说这里其实是讲的如何做到byte[]与Bitmap的转换,我发现这种问题国内真心比不过国外的程序员,下面的程序也是我从国外的网上摘来改的,原来这个牛人是写成了Bitmap BytesToBitmap(byte[] bytes)的函数了,不过精髓没变,后来我觉得我还是太挫了,应该自己就可以写出来的,但是这个牛人用的变量太漂亮了,效率应该比较高
// 将像素信息赋值到位图,colorBitmap就是最后要得到的位图变量,colorPixels就是byte[]
BitmapData bmpData = new BitmapData();
bmpData = colorBitmap.LockBits(
new Rectangle(0, 0, colorBitmap.Width, colorBitmap.Height),
ImageLockMode.WriteOnly,
colorBitmap.PixelFormat);
IntPtr ptr = bmpData.Scan0; // bmp内存的首地址
Marshal.Copy(colorPixels, 0, ptr,
colorPixels.Length);
this.colorBitmap.UnlockBits(bmpData);
至于Bitmap怎么到byte[]跟你的Format有关,也就是你要知道每个像素点的RBGA值的位宽
int16=short; int32=int; int64=long;
http://msdn.microsoft.com/en-us/library/bb198834.aspx Setdata不可用 Error:The type you are using for T in this method is an invalid size for this resource.