/// <summary>
        /// Creates an iconic object depicting the
        /// measuring field.
        /// </summary>
        public void UpdateMeasureRegion()
        {
            mMeasureRegion.Dispose();
            mMeasureRegion.GenEmptyObj();
            switch (mROIType)
            {
            case ROI.ROI_TYPE_CIRCLEARC:
                double   sPhi, extent, innerRad, outerRad;
                HTuple   innerR, outerR, innerC, outerC;
                HXLDCont outCont, innerCont, contour;

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

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


                innerCont.GenCircleContourXld(mMeasROI[0].D, mMeasROI[1].D, innerRad, sPhi, (sPhi + extent), (extent > 0) ? "positive" : "negative", 1.0);
                outCont.GenCircleContourXld(mMeasROI[0].D, mMeasROI[1].D, 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();

                mMeasureRegion = contour.GenRegionContourXld("margin");

                contour.Dispose();
                innerCont.Dispose();
                outCont.Dispose();
                break;

            case ROI.ROI_TYPE_CIRCLE:
                //
                break;

            default:
                mMeasureRegion.GenRectangle2(mMeasROI[0].D, mMeasROI[1].D,
                                             mMeasROI[2].D, mMeasROI[3].D,
                                             mMeasROI[4].D);
                break;
            }
        }
Exemple #2
0
        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>
        /// Creates an iconic object depicting the 
        /// measuring field.
        /// </summary>
        public void UpdateMeasureRegion()
        {
            mMeasureRegion.Dispose();
            mMeasureRegion.GenEmptyObj();

            if (mROIType == ROI.ROI_TYPE_CIRCLEARC)
            {
                double sPhi, extent, innerRad, outerRad;
                HTuple innerR, outerR, innerC, outerC;
                HXLDCont outCont, innerCont, contour;

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

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

                innerCont.GenCircleContourXld(mMeasROI[0].D, mMeasROI[1].D, innerRad, sPhi, (sPhi + extent), (extent > 0) ? "positive" : "negative", 1.0);
                outCont.GenCircleContourXld(mMeasROI[0].D, mMeasROI[1].D, 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();

                mMeasureRegion = contour.GenRegionContourXld("margin");

                contour.Dispose();
                innerCont.Dispose();
                outCont.Dispose();
            }
            else
            {
                mMeasureRegion.GenRectangle2(mMeasROI[0].D, mMeasROI[1].D,
                                             mMeasROI[2].D, mMeasROI[3].D,
                                             mMeasROI[4].D);
            }
        }
        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();
        }