別の struct の固定サイズの配列を使用して、C# で struct をどのように宣言しますか? これが機能するように宣言する必要があります。または、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;
}
編集:私が学んだことは、RGBQUAD の 256 サイズの配列を割り当てる場合、 BITMAPINFOマーシャル サイズを常に 44 バイト イベントに保つことが重要でUnmanagedType.ByValArray
あるということです。SizeConst = 1
編集 2:ただし、SizeConst は実際の配列サイズよりも小さくしてはなりません。そうしないと、アンマネージ コードによってアプリがクラッシュする可能性があります。