如何在c#中调用c++中的 StretchDIBits 函数

kdiceman 2009-04-23 02:36:17
最近在做一个桌面抓屏程序,要用到StretchDIBits这个函数,函数原型为
int StretchDIBits(HDC hdc, int XDest , int YDest , int nDestWidth, int nDestHeight, int XSrc, int Ysrc, int nSrcWidth, int nSrcHeight, CONST VOID *lpBits, CONST BITMAPINFO * lpBitsInfo, UINT iUsage, DWORD dwRop);

现在想在c#中调用这个函数,
[DllImport("gdi32.dll")]
unsafe private static extern int StretchDIBits(IntPtr hdcDest,int xDest,int yDest,int nDestWidth,int nDestHeight,int XSrc,int YSrc,int nSrcWidth,int nSrcHeight,void* lpBits,(),(),(),());

想请教各位大侠,C#中这个函数如何补全,谢谢
...全文
236 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
himoggy 2009-04-23
  • 打赏
  • 举报
回复
其中BITMAPINFO 为结构体 结构为
[StructLayout(LayoutKind.Sequential)]
public struct BITMAPINFO {
BITMAPINFOHEADER bmiHeader;
RGBQUAD bmiColors[1];
}

取得时,通过lpBitsInfo 从内存中拷贝出来
BITMAPINFOHEADER 和RGBQUAD 也都是结构体……
himoggy 2009-04-23
  • 打赏
  • 举报
回复
private static extern int StretchDIBits(IntPtr hdc, int XDest, int YDest, int nDestWidth, int nDestHeight, int XSrc, int Ysrc, int nSrcWidth, int nSrcHeight, IntPtr lpBits, IntPtr lpBitsInfo, uint iUsage, uint dwRop);


这么做不行吗?

111,126

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Creator Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧