(我甚至不确定如何以正确的方式提出这个问题,抱歉。我的图像处理技能基本上不存在。)
我在库中有一个函数(即来自CL.NUI的bool CLNUIDevice.GetCameraColorFrameRGB32(...)
来读取Kinect数据)我必须传递IntPtr data
作为参数。生成的图像数据将以data
结尾。
我想用这些数据进行一些图像处理并在屏幕上显示(我想在PictureBox
中)。
当我将变量集传递给IntPtr.Zero
时,它会保持0
。据我了解,我必须正确初始化data
。我的图像是640x480像素,从示例来看它应该有PixelFormat.Format32bppPArgb
如何为每像素32位的640x480像素位图初始化IntPtr
?
答案 0 :(得分:1)
使用width / height / bpp和通过构造函数传入的图像数据指针创建一个新的Bitmap对象。
然后,您可以选择显示该位图。
答案 1 :(得分:1)
var bmp = new Bitmap(640, 480, System.Drawing.Imaging.PixelFormat.Format32bppPArgb);
System.Drawing.Imaging.BitmapData bd = null;
try {
bd = bmp.LockBits(new Rectangle(Point.Empty, bmp.Size), System.Drawing.Imaging.ImageLockMode.ReadWrite, bmp.PixelFormat);
var pointer = bd.Scan0;
// Make the call, passing *pointer*
//...
}
finally {
if (bd != null) bmp.UnlockBits(bd);
}
// Do something with <bmp>
//...
答案 2 :(得分:0)
我希望此链接可以帮助您Using WritePixels when using a writeable bitmap from a intptr to create a bitmap
你可以改变这取决于你的要求......