为指定的图像数据创建IntPtr

时间:2011-11-11 14:52:38

标签: c# winforms image-processing

(我甚至不确定如何以正确的方式提出这个问题,抱歉。我的图像处理技能基本上不存在。)

我在库中有一个函数(即来自CL.NUI的bool CLNUIDevice.GetCameraColorFrameRGB32(...)来读取Kinect数据)我必须传递IntPtr data作为参数。生成的图像数据将以data结尾。

我想用这些数据进行一些图像处理并在屏幕上显示(我想在PictureBox中)。

当我将变量集传递给IntPtr.Zero时,它会保持0。据我了解,我必须正确初始化data。我的图像是640x480像素,从示例来看它应该有PixelFormat.Format32bppPArgb

如何为每像素32位的640x480像素位图初始化IntPtr

3 个答案:

答案 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

你可以改变这取决于你的要求......