public bool AddRoi(RoiType type) { bool isSuccess = false; try { switch (type) { case RoiType.Rectangle: mHDrawRegions.Add(new HalconDotNet.HDrawingObject()); mHDrawRegions.Last().CreateDrawingObjectRectangle1(100, 100, 500, 500); break; case RoiType.Circle: mHDrawRegions.Add(new HalconDotNet.HDrawingObject()); mHDrawRegions.Last().CreateDrawingObjectCircle(100, 100, 250); break; case RoiType.Polygon: // 先不要用,目前還不知道怎麼定形 mHDrawRegions.Add(new HalconDotNet.HDrawingObject()); mHDrawRegions.Last().CreateDrawingObjectXld(new HalconDotNet.HTuple(new int[] { 100, 150 }), new HalconDotNet.HTuple(new int[] { 100, 150 })); break; } HalconDotNet.HDrawingObject.HDrawingObjectCallback test = Callback; IntPtr callback = System.Runtime.InteropServices.Marshal.GetFunctionPointerForDelegate(test); HalconDotNet.HTuple listenTo = new HalconDotNet.HTuple("on_select", "on_attach", "on_detach", "on_drag", "on_resize"); // in order to try order events //HalconDotNet.HTuple listenTo = new HalconDotNet.HTuple("on_select"); if (mHWindow != null) { mHWindow.AttachDrawingObjectToWindow(mHDrawRegions.Last()); } mHDrawRegions.Last().SetDrawingObjectCallback(listenTo, new HalconDotNet.HTuple(callback)); mCurrentRoiId = mHDrawRegions.Last().ID; isSuccess = true; } catch (HalconDotNet.HalconException ex) { Console.WriteLine($"{ex.StackTrace}"); } catch (System.Exception ex) { Console.WriteLine($"{ex.StackTrace}"); } return(isSuccess); }
public void DispAllRoi(List <MyRegion> rois) { if (mHDrawRegions.Count > 0) { DeleteRoi(DeleteType.All); } foreach (MyRegion roi in rois) { mHDrawRegions.Add(TransMyRegion2HDrawingObject(roi)); mHWindow.AttachDrawingObjectToWindow(mHDrawRegions.Last()); HalconDotNet.HDrawingObject.HDrawingObjectCallback test = Callback; IntPtr callback = System.Runtime.InteropServices.Marshal.GetFunctionPointerForDelegate(test); HalconDotNet.HTuple listenTo = new HalconDotNet.HTuple("on_select", "on_attach", "on_detach", "on_drag", "on_resize"); // in order to try order events if (mHWindow != null) { mHWindow.AttachDrawingObjectToWindow(mHDrawRegions.Last()); } mHDrawRegions.Last().SetDrawingObjectCallback(listenTo, new HalconDotNet.HTuple(callback)); mCurrentRoiId = mHDrawRegions.Last().ID; } }