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;
            }
        }