如何在 C# 中声明一个具有另一个结构的固定大小数组的结构?我需要这个声明以便它工作。或者如果我想要创建位图信息(-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
如果我分配 256 大小的 RGBQUAD 数组,将BITMAPINFOSizeConst = 1
编组大小始终保持在 44 字节事件很重要。
编辑 2:但 SizeConst 不能小于实际数组大小,否则非托管代码可能会使应用程序崩溃。