Exemplo n.º 1
0
        public override void Draw(HalconDotNet.HWindow window)
        {
            HalconDotNet.HTuple tmpRows = new HalconDotNet.HTuple(_sizeRows.ToArray <double>());
            HalconDotNet.HTuple tmpCols = new HalconDotNet.HTuple(_sizeCols.ToArray <double>());
            window.DispPolygon(tmpRows, tmpCols);

            window.DispRectangle2(_locateRow, _locateCol, 0, 5, 5); //几何中心
            for (int i = 0; i < this._numHandles; i++)
            {
                window.DispRectangle2(_sizeRows[i], _sizeCols[i], 0, 2, 2);
            }
        }
Exemplo n.º 2
0
        public override void CreateROI(HalconDotNet.HWindow window, double row, double col)
        {
            HalconDotNet.HObject polygonXLD = new HalconDotNet.HObject();
            HalconDotNet.HTuple  tmpRows    = new HalconDotNet.HTuple();
            HalconDotNet.HTuple  tmpCols    = new HalconDotNet.HTuple();
            HalconDotNet.HTuple  tmpWights  = new HalconDotNet.HTuple();

            HalconDotNet.HTuple area    = new HalconDotNet.HTuple();
            HalconDotNet.HTuple r       = new HalconDotNet.HTuple();
            HalconDotNet.HTuple c       = new HalconDotNet.HTuple();
            HalconDotNet.HTuple pointer = new HalconDotNet.HTuple();

            try
            {
                polygonXLD.Dispose();
                HalconDotNet.HOperatorSet.DrawNurbs(out polygonXLD, window, "true", "true", "true", "true", 3,
                                                    out tmpRows, out tmpCols, out tmpWights);
                if (tmpRows.TupleLength() > 0)
                {
                    polygonXLD.Dispose();
                    HalconDotNet.HOperatorSet.GenContourPolygonXld(out polygonXLD, tmpRows, tmpCols);
                    HalconDotNet.HOperatorSet.AreaCenterXld(polygonXLD, out area, out r, out c, out pointer);

                    _locateRow = r[0].D;
                    _locateCol = c[0].D;

                    window.DispPolygon(tmpRows, tmpCols);
                    window.DispRectangle2(_locateRow, _locateCol, 0, 5, 5); //几何中心
                    this._numHandles = tmpRows.TupleLength() + 1;           //几何中心+边点

                    for (int i = 0; i < tmpRows.TupleLength(); i++)
                    {
                        _sizeRows.Add(tmpRows[i].D);
                        _sizeCols.Add(tmpCols[i].D);
                        window.DispRectangle2(tmpRows[i].D, tmpCols[i].D, 0, 2, 2);
                    }
                }
            }
            catch (HalconDotNet.HalconException hex)
            {
            }
        }