110,567
社区成员
发帖
与我相关
我的任务
分享
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct BITMAPINFO
{
/// BITMAPINFOHEADER->tagBITMAPINFOHEADER
public BITMAPINFOHEADER bmiHeader;
/// RGBQUAD[1]
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 1, ArraySubType = UnmanagedType.Struct)]
public RGBQUAD[] bmiColors;
}
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct BITMAPINFOHEADER
{
/// DWORD->unsigned int
public uint biSize;
/// LONG->int
public int biWidth;
/// LONG->int
public int biHeight;
/// WORD->unsigned short
public ushort biPlanes;
/// WORD->unsigned short
public ushort biBitCount;
/// DWORD->unsigned int
public uint biCompression;
/// DWORD->unsigned int
public uint biSizeImage;
/// LONG->int
public int biXPelsPerMeter;
/// LONG->int
public int biYPelsPerMeter;
/// DWORD->unsigned int
public uint biClrUsed;
/// DWORD->unsigned int
public uint biClrImportant;
}
[StructLayoutAttribute(LayoutKind.Sequential)]
public struct RGBQUAD
{
/// BYTE->unsigned char
public byte rgbBlue;
/// BYTE->unsigned char
public byte rgbGreen;
/// BYTE->unsigned char
public byte rgbRed;
/// BYTE->unsigned char
public byte rgbReserved;
}
public partial class NativeMethods
{
/// Return Type: BOOL->int
///pData: UCHAR**
///pInfo: BITMAPINFO**
[DllImportAttribute("<Unknown>", EntryPoint = "MAG_GetOutputColorBardata")]
[return: MarshalAsAttribute(UnmanagedType.Bool)]
public static extern bool MAG_GetOutputColorBardata(ref IntPtr pData, ref IntPtr pInfo);
}
不是找到P/Invoke Interop Assistant 今晚真成了我的世界末日了。。。。
结贴const UCHAR * pBmpData=NULL, * pColorBarData=NULL;
const BITMAPINFO * pBmpInfo=NULL, * pColoarBarInfo=NULL;
if ( !MAG_GetOutputBMPdata(&pBmpData, &pBmpInfo) ||
!MAG_GetOutputColorBardata(&pColorBarData, &pColoarBarInfo))
{
MAG_UnLockFrame();
MemDC.SelectObject(pOldBit);
MemBitmap.DeleteObject();
MemDC.DeleteDC();
return;
}
StretchDIBits(MemDC.GetSafeHdc(), 5, 5, BMPWIDTH, BMPHEIGHT,
0, 0, BMPWIDTH, BMPHEIGHT,
pBmpData, pBmpInfo,
DIB_RGB_COLORS, SRCCOPY);
/// <summary>
/// 封送C++中的BITMAPINFOHEADER结构。
/// </summary>
[StructLayout(LayoutKind.Sequential)]
public struct BitmapInfoHeader
{
[MarshalAs(UnmanagedType.I4)]
public Int32 biSize;
[MarshalAs(UnmanagedType.I4)]
public Int32 biWidth;
[MarshalAs(UnmanagedType.I4)]
public Int32 biHeight;
[MarshalAs(UnmanagedType.I2)]
public short biPlanes;
[MarshalAs(UnmanagedType.I2)]
public short biBitCount;
[MarshalAs(UnmanagedType.I4)]
public Int32 biCompression;
[MarshalAs(UnmanagedType.I4)]
public Int32 biSizeImage;
[MarshalAs(UnmanagedType.I4)]
public Int32 biXPelsPerMeter;
[MarshalAs(UnmanagedType.I4)]
public Int32 biYPelsPerMeter;
[MarshalAs(UnmanagedType.I4)]
public Int32 biClrUsed;
[MarshalAs(UnmanagedType.I4)]
public Int32 biClrImportant;
}
/// <summary>
/// 封送C++中的BITMAPINFO结构。
/// </summary>
[StructLayout(LayoutKind.Sequential)]
public struct BitmapInfo
{
[MarshalAs(UnmanagedType.Struct, SizeConst = 40)]
public BitmapInfoHeader bmiHeader;
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 1024)]
public Int32[] bmiColors;
}