我有一个像
编辑:我尝试了这段代码,它可以工作,但是这样安全吗?
byte[] pixels
这样的数组。有没有办法从那个pixels
创建一个bitmap
对象而不需要复制数据?我有一个小型图形库,当我需要在WinForms
窗口上显示图像时,我只需将数据复制到一个bitmap
对象中,然后使用绘制方法。我能避免这个复制过程吗?我记得我在某个地方看到过,但也许我的记忆力不好。编辑:我尝试了这段代码,它可以工作,但是这样安全吗?
byte[] pixels = new byte[10 * 10 * 4];
pixels[4] = 255; // set 1 pixel
pixels[5] = 255;
pixels[6] = 255;
pixels[7] = 255;
// do some tricks
GCHandle pinnedArray = GCHandle.Alloc(pixels, GCHandleType.Pinned);
IntPtr pointer = pinnedArray.AddrOfPinnedObject();
// create a new bitmap.
Bitmap bmp = new Bitmap (10, 10, 4*10, PixelFormat.Format32bppRgb, pointer);
Graphics grp = this.CreateGraphics ();
grp.DrawImage (bmp, 0, 0);
pixels[4+12] = 255; // add a pixel
pixels[5+12] = 255;
pixels[6+12] = 255;
pixels[7+12] = 255;
grp.DrawImage (bmp, 0, 40);