由于本人以前是做BS程序的,故对Form编程没什么太多的经验现在有一个摄像头捕捉图像,应用程序显示图片的项目
该项目上调用Vc++编写的DLL实现图片的显示,基本有一个API:
/*
*函数说明:在指定的窗口绘图,该函数不支持缩放,但效率高,CPU占用率小
*输入参数:
*hDraw:    绘图对象句柄。
*pBits:    图像数据缓冲区地址。
*nSize      图像数据缓冲区大小。
*nLeft:    图像在窗体显示时,左上角相对于窗体客户区的横坐标
*nTop:     图像在窗体显示时,左上角相对于窗体客户区的纵坐标
*输出参数: 无
*/
DRAWUTIL_API
void __stdcall FD_DrawActualImage(HANDLE hDraw, PVOID pBits, UINT nSize, int nLeft, int nTop);我需要用C#调用这个方法来显示图片:
[DllImport("DrawUtil.dll")]
public static extern void FD_DrawActualImage(IntPtr hDraw, IntPtr pBits, UInt32 nSize, Int32 nLeft, Int32 nTop);现在的问题是,我不知道如何显示图片,请高手给点提示(最好给点关键代码)
1.图片应该显示到什么控件上?(Panel?)2.IntPtr hDraw这个设备的句柄是什么?是不是控件的panel1.handle?
我使用这个值传给DLL函数,报错:
未处理 System.AccessViolationException
  Message="尝试读取或写入受保护的内存。这通常指示其他内存已损坏。"
  Source="FCAMViewerMessage_CSharp"
  StackTrace:
       在 FCAMViewerMessage_CSharp.DrawUtil_Invoke.FD_DrawActualImage(IntPtr hDraw, IntPtr pBits, UInt32 nSize, Int32 nLeft, Int32 nTop)
       在 FCAMViewerMessage_CSharp.Form1.MyCallBackFunction(IntPtr pCommuParam) 位置 E:\AL_Project\FCAMViewerMessage_CSharp\FCAMViewerMessage_CSharp\Form1.cs:行号 409
  InnerException: