因为我是用相机按一下会在picturebox上显示图片,我想要图片显示之后触发我写的另一个事件
请问要如何做到呢?
pictureBox1_Paint
pictureBox的 LoadCompleted事件
没有提供这个事件。
不过有3个思路可以解决这个问题
1.既然是你代码控制image变化的,那你直接去调用,而不必触发什么事件。毕竟image属性变化和iamge绘制完毕是两回事
2.自己继承picturebox,然后override image属性,给它加个事件
3.放弃Image,改用backgroundimage,这个有事件
海康威视有个回调方法 MV_CC_RegisterImageCallBack_NET 调取图像后发生,
static void CallbackEx(IntPtr pData, ref MyCamera.MV_FRAME_OUT_INFO_EX pFrameInfo, IntPtr pUser)
{ Console.WriteLine("FrameNum:" + pFrameInfo.nFrameNum + ",Width:" + pFrameInfo.nWidth + ",Height:" + pFrameInfo.nHeight);
}
static void Main(string[] args)
{
uint nTLayerType = MyCamera.MV_GIGE_DEVICE | MyCamera.MV_USB_DEVICE;
MyCamera.MV_CC_DEVICE_INFO_LIST stDevList = new MyCamera.MV_CC_DEVICE_INFO_LIST();
int nRet = MyCamera.MV_CC_EnumDevices_NET(nTLayerType, ref stDevList);
if (MyCamera.MV_OK != nRet)
{
Console.WriteLine("Enum device failed:{0:x8}", nRet);
return;
}
Console.WriteLine("The number of devices found: " + Convert.ToString(stDevList.nDeviceNum));
if (0 == stDevList.nDeviceNum)
{
return;
}
MyCamera.MV_CC_DEVICE_INFO stDevInfo;
//设备信息结构体指针 转 设备信息结构体
stDevInfo = (MyCamera.MV_CC_DEVICE_INFO)Marshal.PtrToStructure(stDevList.pDeviceInfo[0], typeof(MyCamera.MV_CC_DEVICE_INFO));
MyCamera device = new MyCamera();
//创建设备
nRet = device.MV_CC_CreateDevice_NET(ref stDevInfo);
if (MyCamera.MV_OK != nRet)
{
Console.WriteLine("Create device failed:{0:x8}", nRet);
return;
}
//打开设备
nRet = device.MV_CC_OpenDevice_NET(MyCamera.MV_ACCESS_Exclusive,0);
if (MyCamera.MV_OK != nRet)
{
Console.WriteLine("Open device failed:{0:x8}", nRet);
return;
}
MyCamera.cbOutputExdelegate ImageCallback;
ImageCallback = new MyCamera.cbOutputExdelegate(CallbackEx);
nRet = device.MV_CC_RegisterImageCallBackEx_NET(ImageCallback, IntPtr.Zero);
if (MyCamera.MV_OK != nRet)
{
Console.WriteLine("Register ImageCallBack failed{0:x8}", nRet);
return;
}
//开启抓图
nRet = device.MV_CC_StartGrabbing_NET();
if (MyCamera.MV_OK != nRet)
{
Console.WriteLine("Start grabbing failed:{0:x8}", nRet);
return;
}
Thread.Sleep(10000);
//...其他处理
//停止抓图
nRet = device.MV_CC_StopGrabbing_NET();
if (MyCamera.MV_OK != nRet)
{
Console.WriteLine("Stop grabbing failed{0:x8}", nRet);
return;
}
//关闭设备
nRet = device.MV_CC_CloseDevice_NET();
if (MyCamera.MV_OK != nRet)
{
Console.WriteLine("Close device failed{0:x8}", nRet);
return;
}
//销毁句柄,释放资源
nRet = device.MV_CC_DestroyDevice_NET();
if (MyCamera.MV_OK != nRet)
{
Console.WriteLine("Destroy device failed:{0:x8}", nRet);
}
}