/// <summary> 
 /// Paints the active handle of the ROI object into the supplied window. 
 /// </summary>
 public override void displayActive(HalconDotNet.HWindow window)
 {
     switch (activeHandleIdx)
     {
         case 0:
             window.DispRectangle2(row1, col1, 0, 5, 5);
             break;
         case 1:
             window.DispObj(arrowHandleXLD); //window.DispRectangle2(row2, col2, 0, 5, 5);
             break;
         case 2:
             window.DispRectangle2(midR, midC, 0, 5, 5);
             break;
     }
 }
        /// <summary>Paints the ROI into the supplied window.</summary>
        public override void draw(HalconDotNet.HWindow window)
        {
            window.DispLine(row1, col1, row2, col2);

            window.DispRectangle2(row1, col1, 0, 5, 5);
            window.DispObj(arrowHandleXLD);  //window.DispRectangle2( row2, col2, 0, 5, 5);
            window.DispRectangle2(midR, midC, 0, 5, 5);
        }
 /// <summary> 
 /// Paints the active handle of the ROI object into the supplied window 
 /// </summary>
 public override void displayActive(HalconDotNet.HWindow window)
 {
     switch (activeHandleIdx)
     {
         case 0:
             window.DispRectangle2(midR, midC, 0, 5, 5);
             break;
         case 1:
             window.DispRectangle2(sizeR, sizeC, 0, 5, 5);
             break;
         case 2:
             window.DispRectangle2(startR, startC, startPhi, 10, 2);
             break;
         case 3:
             window.DispObj(arrowHandleXLD);
             break;
     }
 }
        /// <summary>
        /// Repaints the HALCON window 'window'
        /// </summary>
        public void repaintUsingFlushGraphic(HalconDotNet.HWindow window)
        {
            int count = HObjList.Count;
              HObjectEntry entry;

              if (window != null)
              {
            HSystem.SetSystem("flush_graphic", "false");
            window.ClearWindow();
            // check the boundatries of the image part
            if ((ImgRow2 > ImgRow1) && (ImgCol2 > ImgCol1))
              window.SetPart((int)ImgRow1, (int)ImgCol1, (int)ImgRow2, (int)ImgCol2);
            // set the image part to window size
            else
              window.SetPart(0, 0, windowHeight - 1, windowWidth - 1);
            mGC.stateOfSettings.Clear();

            for (int i = 0; i < count; i++)
            {
              entry = ((HObjectEntry)HObjList[i]);
              if (entry != null)
              {
                  mGC.applyContext(window, entry.gContext);
                  window.DispObj(entry.HObj);
              }
            }

            addInfoDelegate();

            if (roiManager != null && (dispROI == MODE_INCLUDE_ROI))
              roiManager.paintData(window);

            HSystem.SetSystem("flush_graphic", "true");

            window.DispLine(-1000.0, -1000.0, -1001.0, -1001.0);
              }
        }
 /// <summary>Paints the ROI into the supplied window</summary>
 /// <param name="window">HALCON window</param>
 public override void draw(HalconDotNet.HWindow window)
 {
     contour.Dispose();
     contour.GenCircleContourXld(midR, midC, radius, startPhi,
                                 (startPhi + extentPhi), circDir, 1.0);
     window.DispObj(contour);
     window.DispRectangle2(sizeR, sizeC, 0, 5, 5);
     window.DispRectangle2(midR, midC, 0, 5, 5);
     window.DispRectangle2(startR, startC, startPhi, 10, 2);
     window.DispObj(arrowHandleXLD);
 }
        /// <summary>
        /// Repaints the HALCON window 'window'
        /// </summary>
        public void repaint(HalconDotNet.HWindow window)
        {
            try
            {
                int count = HObjList.Count;
                HObjectEntry entry;

                HSystem.SetSystem("flush_graphic", "false");
                window.ClearWindow();
                mGC.stateOfSettings.Clear();

                for (int i = 0; i < count; i++)
                {
                    entry = ((HObjectEntry)HObjList[i]);
                    mGC.applyContext(window, entry.gContext);
                    window.DispObj(entry.HObj);
                }

                addInfoDelegate();

                if (_roiManager != null && (_dispROI == MODE_INCLUDE_ROI))
                    _roiManager.paintData(window);

                var prevScaleC = (double)((ImgCol2 - ImgCol1) / imageWidth);
                foreach (var wViewModel in WriteStringList)
                {
                    window.SetColor("red");
                    HOperatorSet.SetTposition(window, wViewModel.Row, wViewModel.Col);
                    HOperatorSet.WriteString(window, wViewModel.Text);
                }
                //Display Arrow
                var arrowSize = 5 * prevScaleC;
                arrowSize = (arrowSize < 2) ? 2 : arrowSize;
                foreach (var arrowModel in ArrowList)
                {
                    HOperatorSet.DispArrow(window, arrowModel.CenterY, arrowModel.CenterX, arrowModel.FirstArrowY, arrowModel.FirstArrowX, arrowSize);
                    HOperatorSet.DispArrow(window, arrowModel.CenterY, arrowModel.CenterX, arrowModel.SecArrowY, arrowModel.SecArrowX, arrowSize);
                }

                //�e��u
                if (ShowGrid)
                {
                    drawGridLines(window);
                }
                HSystem.SetSystem("flush_graphic", "true");

                window.SetColor(this.RepaintWindowColor);
                window.DispLine(-100.0, -100.0, -101.0, -101.0);
            }
            catch (HOperatorException ex)
            {
                var errorNumber = ex.GetErrorNumber();
                /*
                 5106 �o�ͱ��Ҭ�
                 * 1�C�}���^���v����A���_�u�N���� MDI ����
                 */
                if (errorNumber != 5106 && errorNumber != 5100)
                {
                    Hanbo.Log.LogManager.Error(ex);
                }
            }
        }
 /// <summary> 
 /// Paints the active handle of the ROI object into the supplied window. 
 /// </summary>
 public override void displayActive(HalconDotNet.HWindow window)
 {
     switch (activeHandleIdx)
     {
         case 0:
             window.DispRectangle2(_StartRow, _StartColumn, 0, 5, 5);
             break;
         case 1:
             window.DispObj(_AuxLineHandleXLD); //window.DispRectangle2(row2, col2, 0, 5, 5);
             break;
         case 2:
             //window.DispRectangle2(_MidRow, _MidCol, 0, 5, 5);
             break;
     }
 }
        private void drawOuterArc(HalconDotNet.HWindow window)
        {
            double sPhi, extent, innerRad, outerRad;
            HTuple innerR, outerR, innerC, outerC;
            HXLDCont outCont, innerCont, contour;

            outCont = new HXLDCont();
            innerCont = new HXLDCont();

            var roiModel = this.getModelData();
            var mMeasROI = genArcRegionModel(roiModel);

            sPhi = mMeasROI[2];
            extent = mMeasROI[3];
            outerRad = mMeasROI[4];
            innerRad = mMeasROI[5];

            //畫內圓
            innerCont.GenCircleContourXld(mMeasROI[0], mMeasROI[1], innerRad, sPhi, (sPhi + extent), (extent > 0) ? "positive" : "negative", 1.0);

            //畫外圓
            outCont.GenCircleContourXld(mMeasROI[0], mMeasROI[1], outerRad, (sPhi + extent), sPhi, (extent > 0) ? "negative" : "positive", 1.0);

            innerCont.GetContourXld(out innerR, out innerC);
            outCont.GetContourXld(out outerR, out outerC);

            innerR = innerR.TupleConcat(outerR);
            innerC = innerC.TupleConcat(outerC);

            contour = new HXLDCont(innerR, innerC);
            contour = contour.CloseContoursXld();

            _ArcRegion.Dispose();
            _ArcRegion = contour.GenRegionContourXld("margin");
            window.DispObj(_ArcRegion);

            contour.Dispose();
            innerCont.Dispose();
            outCont.Dispose();
        }
        /// <summary>Paints the ROI into the supplied window</summary>
        /// <param name="window">HALCON window</param>
        public override void draw(HalconDotNet.HWindow window)
        {
            //畫個 x
            double crossSize = 12;
            double crossAngle = 0.785398;

            //Reset line Style
            HOperatorSet.SetLineStyle(window, null);
            if (!_initPointsDone)
            {
                foreach (var dot in _clickedPointsPositionList)
                {
                    HOperatorSet.DispCross(window, dot.RowBegin, dot.ColBegin, crossSize, crossAngle);
                }
            }
            else
            {
                //畫弧線
                contour.Dispose();
                contour.GenCircleContourXld(midR, midC, radius, _startPhi,
                                            (_startPhi + _extentPhi), _pointOrder, 1.0);

                this._beginRow = midR + Math.Sin(_startPhi) * radius;
                this._beginCol = midC + Math.Cos(_startPhi) * radius;

                window.DispObj(contour);
                drawOuterArc(window);

                //畫控制點
                window.DispRectangle2(sizeR, sizeC, 0, 5, 5);
                window.DispRectangle2(midR, midC, 0, 5, 5);
                window.DispRectangle2(startR, startC, _startPhi, 10, 2);
                window.DispObj(arrowHandleXLD);
            }
        }