如何在C#中用另一个结构的固定大小的数组声明结构体?我需要this宣布,以便它的工作。或者,如果我想创建bitmapinfo(-header),我的方法错了吗?另一个结构的固定大小数组的结构
[StructLayout(LayoutKind.Sequential)]
public struct RGBQUAD
{
public byte b;
public byte g;
public byte r;
public byte reserved;
}
[StructLayout(LayoutKind.Sequential)]
public struct BITMAPINFO
{
public BITMAPINFOHEADER bmiHeader;
[MarshalAs(UnmanagedType.ByValArray, ArraySubType = UnmanagedType.LPStruct, SizeConst = 1)]
public RGBQUAD[] bmiColors;
}
编辑:我得知自己是UnmanagedType.ByValArray
和SizeConst = 1
在这里很重要在44个字节的事件不断保持BITMAPINFO元帅的大小,如果我给你256 RGBQUAD的大小的数组。
编辑2:但SizeConst一定不能小于实际的数组大小,否则非托管代码可能会使应用程序崩溃。
你不能声明一个固定大小的结构体,你只能声明一个结构体在interop期间如何被编组。 – 2013-02-25 16:38:18
也许这会帮助吗? http://www.pinvoke.net/default.aspx/Structures/BITMAPINFOHEADER。html – 2013-02-25 16:39:46