如何在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