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