using System; using System.Collections.Generic; using System.Linq; using System.Runtime.InteropServices; using System.Text; using System.Threading.Tasks; namespace LB_SmartVisionCameraSDK.PHM6000 { /// /// LBPointZ数据结构 /// [StructLayout(LayoutKind.Sequential, Pack = 1)] public struct LBPointZ { /// /// Z坐标值 /// public float z; } /// /// LBPointXZ数据结构 /// [StructLayout(LayoutKind.Sequential, Pack = 1)] public struct LBPointXZ { /// /// X坐标值 /// public float x; /// /// Z坐标值 /// public float z; } /// /// LBPointXYZ数据结构 /// [StructLayout(LayoutKind.Sequential, Pack = 1)] public struct LBPointXYZ { /// /// X坐标值 /// public float x; /// /// Y坐标值 /// public float y; /// /// Z坐标值 /// public float z; } /// /// LBPointXYZBGR数据结构 /// [StructLayout(LayoutKind.Sequential, Pack = 1)] public struct LBPointXYZBGR { /// /// X坐标值 /// public float x; /// /// Y坐标值 /// public float y; /// /// Z坐标值 /// public float z; /// /// 蓝色分量 /// public byte b; /// /// 绿色分量 /// public byte g; /// /// 红色分量 /// public byte r; } /// /// LBPointXYZBGRA数据结构 /// [StructLayout(LayoutKind.Sequential, Pack = 1)] public struct LBPointXYZBGRA { /// /// X坐标值 /// public float x; /// /// Y坐标值 /// public float y; /// /// Z坐标值 /// public float z; /// /// 蓝色分量 /// public byte b; /// /// 绿色分量 /// public byte g; /// /// 红色分量 /// public byte r; /// /// 透明度 /// public byte alpha; } /// /// LBPointBGRA数据结构 /// [StructLayout(LayoutKind.Sequential, Pack = 1)] public struct LBPointBGRA { /// /// 蓝色分量 /// public byte b; /// /// 绿色分量 /// public byte g; /// /// 红色分量 /// public byte r; /// /// 透明度 /// public byte alpha; } /// /// LBPointZA数据结构 /// [StructLayout(LayoutKind.Sequential, Pack = 1)] public struct LBPointZA { /// /// Z坐标值 /// public float z; /// /// 保留1 /// public byte reserve1; /// /// 保留2 /// public byte reserve2; /// /// 保留3 /// public byte reserve3; /// /// 透明度 /// public byte alpha; } /// /// BITMAPINFOHEADER数据结构 /// [StructLayout(LayoutKind.Sequential)] public struct BITMAPINFOHEADER { /// /// 指定结构所需的字节数。 此值不包括颜色表的大小或颜色掩码的大小(如果它们追加到结构的末尾)。 /// public uint biSize; /// /// 指定位图的宽度(以像素为单位) /// public int biWidth; /// /// 指定位图的高度(以像素为单位)。 /// public int biHeight; /// /// 指定目标设备的平面数。 此值必须设置为 1。 /// public ushort biPlanes; /// /// 指定每像素 (bpp) 位数。 对于未压缩格式,此值是每像素的平均位数。 对于压缩格式,此值是解码图像后未压缩图像的隐含位深度。 /// public ushort biBitCount; /// /// 对于压缩视频和 YUV 格式,此成员是 FOURCC 代码,以小端顺序指定为 DWORD 。 /// public uint biCompression; /// /// 指定图像的大小(以字节为单位)。 对于未压缩的 RGB 位图,可以将其设置为 0。 /// public uint biSizeImage; /// /// 指定位图的目标设备的水平分辨率(以像素/米为单位)。 /// public int biXPelsPerMeter; /// /// 指定位图的目标设备的垂直分辨率(以每米像素为单位)。 /// public int biYPelsPerMeter; /// /// 指定位图实际使用的颜色表中的颜色索引数。 /// public uint biClrUsed; /// /// 指定被认为对显示位图很重要的颜色索引数。 /// public uint biClrImportant; } /// /// RGBQUAD数据结构 /// [StructLayout(LayoutKind.Sequential)] public struct RGBQUAD { /// /// 蓝色的强度。 /// public byte rgbBlue; /// /// 绿色的颜色强度。 /// public byte rgbGreen; /// /// 红色的强度。 /// public byte rgbRed; /// /// 此成员为保留成员,必须为零。 /// public byte rgbReserved; } // 正确实现 BITMAPINFO 结构体 /// /// BITMAPINFO数据结构体 /// [StructLayout(LayoutKind.Sequential)] public struct BITMAPINFO { /// /// 一个 BITMAPINFOHEADER 结构,其中包含有关颜色格式维度的信息。 /// public BITMAPINFOHEADER bmiHeader; // 使用 InlineArray 特性处理可变长度颜色表 /// /// RGBQUAD 数组。 构成颜色表的数组的元素。 /// [MarshalAs(UnmanagedType.ByValArray, SizeConst = 1)] public RGBQUAD[] bmiColors; } }