1.定义BITMAPINFO类型
[StructLayout(LayoutKind.Sequential)]
public class BITMAPINFOHEADER
{
[FieldOffset(0)]
public Int32 biSize;
[FieldOffset(4)]
public Int32 biWidth;
[FieldOffset(8)]
public Int32 biHeight;
[FieldOffset(12)]
public Int16 biPlanes;
[FieldOffset(14)]
public Int16 biBitCount;
[FieldOffset(16)]
public Int32 biCompression;
[FieldOffset(20)]
public Int32 biSizeImage;
[FieldOffset(24)]
public Int32 biXPelsPerMeter;
[FieldOffset(28)]
public Int32 biYPelsPerMeter;
[FieldOffset(32)]
public Int32 biClrUsed;
[FieldOffset(36)]
public Int32 biClrImportant;
}
[StructLayout(LayoutKind.Sequential)]
public class BITMAPINFO
{
public BITMAPINFOHEADER bmiHeader;
public IntPtr bmiColors;
}
2.
int size = Marshal.SizeOf(typeof(BITMAPINFO));
3.IntPtr ptrBitMap = Marshal.AllocCoTaskMem(size );
4.BITMAPINFO mybitmap = (BITMAPINFO Marshal.PtrToStructure(ptrBitMap, typeof(BITMAPINFO));