int nSize = (int)(m_drawframe.uiImgSize + m_drawframe.usHeader);
byte[] pBuf = new byte[nSize];
Marshal.Copy(m_drawframe.pBuffer, pBuf, 0, nSize);
// 偏移头部数据
Buffer.BlockCopy(pBuf, (int)(m_drawframe.usHeader), pBuf, 0, (int)(m_drawframe.uiImgSize));
// 转换为 Bitmap
int stride = (int)(m_drawframe.uiWidthStep);
GCHandle handle = GCHandle.Alloc(pBuf, GCHandleType.Pinned);
int scan0 = (int)handle.AddrOfPinnedObject();
scan0 += (m_drawframe.usHeight - 1) * stride;
System.Drawing.Bitmap bitmap = new System.Drawing.Bitmap(m_drawframe.usWidth, m_drawframe.usHeight, -stride, System.Drawing.Imaging.PixelFormat.Format24bppRgb, (IntPtr)scan0);
handle.Free();
Bitmap bmpDraw = bitmap.Clone(new Rectangle(0, 0, bitmap.Width, bitmap.Height), bitmap.PixelFormat);
pictureBox1.Image = bmpDraw;