Exemplo n.º 1
0
        /// <summary>
        /// Paints all objects from the ROIList into the HALCON window
        /// </summary>
        /// <param name="window">HALCON window</param>
        public void paintData(HalconDotNet.HWindow window)
        {
            if (isShowROI)
            {
                window.SetDraw("margin");
                window.SetLineWidth(1);

                if (ROIList.Count > 0)
                {
                    window.SetColor(inactiveCol);
                    window.SetDraw("margin");

                    for (int i = 0; i < ROIList.Count; i++)
                    {
                        window.SetLineStyle(((ROI)ROIList[i]).flagLineStyle);
                        ((ROI)ROIList[i]).draw(window, false);
                        window.SetColor("orange");//可以控制显示ROI编号,与HDisplay内的显示重复
                        double[] p = ((ROI)ROIList[i]).GetPosition();
                        window.SetTposition((int)p[0], (int)p[1]);
                        window.WriteString(i.ToString());
                    }

                    if (activeROIidx != -1)
                    {
                        window.SetColor(activeCol);
                        window.SetLineStyle(((ROI)ROIList[activeROIidx]).flagLineStyle);
                        ((ROI)ROIList[activeROIidx]).draw(window, true);

                        window.SetColor(activeHdlCol);
                        ((ROI)ROIList[activeROIidx]).displayActive(window);
                    }
                }
            }
        }
Exemplo n.º 2
0
        /// <summary>
        /// Paints specified region from the ROIList into the HALCON window
        /// </summary>
        /// <param name="window">HALCON window</param>
        public void paintSpecifiedROI(HalconDotNet.HWindow window, int RegionID)
        {
            window.SetDraw("margin");
            window.SetLineWidth(1);

            if ((ROIList.Count > 0) && (ROIList.Count > RegionID))
            {
                window.SetColor(inactiveCol);
                window.SetDraw("margin");

                window.SetLineStyle(((ROI)ROIList[RegionID]).flagLineStyle);
                ((ROI)ROIList[RegionID]).draw(window);


                if ((activeROIidx != -1) && (activeROIidx == RegionID))
                {
                    window.SetColor(activeCol);
                    window.SetLineStyle(((ROI)ROIList[activeROIidx]).flagLineStyle);
                    ((ROI)ROIList[activeROIidx]).draw(window);

                    window.SetColor(activeHdlCol);
                    ((ROI)ROIList[activeROIidx]).displayActive(window);
                }
            }
        }
Exemplo n.º 3
0
        /// <summary>
        /// Paints all objects from the ROIList into the HALCON window
        /// </summary>
        /// <param name="window">HALCON window</param>
        public void paintData(HalconDotNet.HWindow window)
        {
            window.SetDraw("margin");
            window.SetLineWidth(1);

            if (ROIList.Count > 0)
            {
                //
                //window.SetColor(inactiveCol);

                window.SetDraw("margin");

                for (int i = 0; i < ROIList.Count; i++)
                {
                    window.SetColor(((ROI)ROIList[i]).Color);
                    window.SetLineStyle(((ROI)ROIList[i]).flagLineStyle);
                    ((ROI)ROIList[i]).draw(window, Convert.ToInt32(viewController.ImgCol2 - viewController.ImgCol1), Convert.ToInt32(viewController.ImgRow2 - viewController.ImgRow1));
                }

                if (activeROIidx != -1)
                {
                    window.SetColor(activeCol);
                    window.SetLineStyle(((ROI)ROIList[activeROIidx]).flagLineStyle);
                    ((ROI)ROIList[activeROIidx]).draw(window, Convert.ToInt32(viewController.ImgCol2 - viewController.ImgCol1), Convert.ToInt32(viewController.ImgRow2 - viewController.ImgRow1));

                    window.SetColor(activeHdlCol);
                    ((ROI)ROIList[activeROIidx]).displayActive(window, Convert.ToInt32(viewController.ImgCol2 - viewController.ImgCol1), Convert.ToInt32(viewController.ImgRow2 - viewController.ImgRow1));
                }
            }
        }
        /// <summary>
        /// draw, 決定要畫什麼在 window 上
        /// </summary>
        /// <param name="window">Halcon Window</param>
        public override void draw(HalconDotNet.HWindow window)
        {
            double crossSize  = 12;
            double crossAngle = 0.785398;

            //寫字
            if (!String.IsNullOrEmpty(Name))
            {
                if (!this.IsActive)
                {
                    window.SetColor("red");
                }
                HOperatorSet.SetTposition(window, _model.RowBegin, _model.ColBegin);
                window.WriteString(Name);
            }

            //畫圓
            if (!this.IsActive)
            {
                window.SetColor("magenta");
            }

            window.SetLineWidth(2);
            var radius = _model.Distance / CircleDistanceSetting;

            window.DispCross(_model.RowBegin, _model.ColBegin, crossSize, crossAngle);
            window.DispCircle(_model.RowBegin, _model.ColBegin, radius);

            //畫圓內虛線
            /**/
            window.SetLineWidth(1);
            HTuple dotLineStyle = new HTuple(new int[4] {
                20, 7, 3, 7
            });

            window.SetLineStyle(dotLineStyle);
            var hLineRowBegin = _model.RowBegin;
            var hLineColBegin = _model.ColBegin - radius;
            var hLineRowEnd   = _model.RowBegin;
            var hLineColEnd   = _model.ColBegin + radius;

            var vLineRowBegin = _model.RowBegin - radius;
            var vLineColBegin = _model.ColBegin;
            var vLineRowEnd   = _model.RowBegin + radius;
            var vLineColEnd   = _model.ColBegin;

            window.DispLine(hLineRowBegin, hLineColBegin, hLineRowEnd, hLineColEnd);
            window.DispLine(vLineRowBegin, vLineColBegin, vLineRowEnd, vLineColEnd);

            //Reset line Style
            HOperatorSet.SetLineStyle(window, null);
        }
        /// <summary>
        /// Paints all objects from the ROIList into the HALCON window
        /// </summary>
        /// <param name="window">HALCON window</param>
        public void paintData(HalconDotNet.HWindow window)
        {
            window.SetDraw("margin");
            window.SetLineWidth(1);
            //畫還未完成的 ROI
            if (_waitForClickROI != null)
            {
                _waitForClickROI.draw(window);
            }

            if (ROIList.Count > 0)
            {
                window.SetColor(inactiveCol);
                window.SetDraw("margin");

                //畫所有的 ROI
                for (int i = 0; i < ROIList.Count; i++)
                {
                    if (i == activeROIidx)
                    {
                        continue;
                    }
                    var roi = (ROI)ROIList[i];
                    roi.IsActive = false;
                    if (roi.Visiable)
                    {
                        window.SetLineStyle(roi.flagLineStyle);
                        roi.SetZoomRatio(_zoomFactor);
                        roi.draw(window);
                    }
                }

                //畫 Active ROI
                if (activeROIidx != -1)
                {
                    var activeROI = (ROI)ROIList[activeROIidx];
                    activeROI.IsActive = true;
                    if (activeROI.Visiable)
                    {
                        window.SetColor(activeCol);
                        window.SetLineStyle(activeROI.flagLineStyle);
                        activeROI.draw(window);

                        window.SetColor(activeHdlCol);
                        activeROI.displayActive(window);
                    }
                }
            }
        }
Exemplo n.º 6
0
        /// <summary>
        /// Repaints the HALCON window 'window'
        /// </summary>
        public void repaint(HalconDotNet.HWindow window, HObject obj)
        {
            HSystem.SetSystem("flush_graphic", "false");
            window.ClearWindow();

            window.DispObj(obj);

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

            window.SetColor("black");
            window.DispLine(-100.0, -100.0, -101.0, -101.0);
        }
Exemplo n.º 7
0
        /// <summary>
        /// 显示操作点
        /// </summary>
        /// <param name="number"></param>
        /// <param name="hwin"></param>
        public override void displayOperation(int number, HalconDotNet.HWindow hwin)
        {
            switch (number)
            {
            case 0:

                hwin.SetColor("red");
                hwin.DispRectangle2(this._row_y1, this._col_x1, 0, 5, 5);
                hwin.SetColor("green");

                break;

            case 1:
                hwin.SetColor("red");
                hwin.DispRectangle2(this._row_y1, this._col_x2, 0, 5, 5);
                hwin.SetColor("green");
                break;

            case 2:
                hwin.SetColor("red");
                hwin.DispRectangle2(this._row_y2, this._col_x1, 0, 5, 5);
                hwin.SetColor("green");
                break;

            case 3:
                hwin.SetColor("red");
                hwin.DispRectangle2(this._row_y2, this._col_x2, 0, 5, 5);
                hwin.SetColor("green");
                break;

            case 4:
                hwin.SetColor("red");
                hwin.DispRectangle2(this._mid_row_y, this._mid_col_x, 0, 5, 5);
                hwin.SetColor("green");
                break;

            default:
                break;
            }
        }
Exemplo n.º 8
0
        /// <summary>
        /// Repaints the HALCON window 'window'
        /// </summary>
        private void repaint(HalconDotNet.HWindow window)
        {
            int count = HObjList.Count;

            if (count > 0)
            {
                HObjectEntry entry;
                HSystem.SetSystem("flush_graphic", "false");
                window.ClearWindow();
                mGC.stateOfSettings.Clear();
                for (int i = 0; i < count; i++)
                {
                    entry = ((HObjectEntry)HObjList[i]);
                    if (entry.colorShow.Length > 0)
                    {
                        window.SetColor(entry.colorShow);
                    }
                    mGC.applyContext(window, entry.gContext);
                    window.DispObj(entry.HObj);
                }
                if (roiManager != null)
                {
                    roiManager.paintData(window);
                }
                HSystem.SetSystem("flush_graphic", "true");
                window.DispLine(-100.0, -100.0, -101.0, -101.0);
            }
            count = StrList.Count;
            if (count > 0)
            {
                foreach (StringX strX in StrList)
                {
                    window.SetFont("-Consolas-" + strX.size.ToString() + "-*-" + (strX.bold ? "1" : "0") + "-*-*-" + (strX.slant ? "1" : "0") + "-");
                    window.SetColor(strX.color.Name.ToLower());
                    window.SetTposition(strX.row, strX.column);
                    window.WriteString(strX.str);
                }
            }
        }
Exemplo n.º 9
0
        /// <summary>
        /// Paints all objects from the ROIList into the HALCON window
        /// </summary>
        /// <param name="window">HALCON window</param>
        public void PaintData(HalconDotNet.HWindow window, int imageWidth, double txtScale)
        {
            window.SetDraw("margin");
            window.SetLineWidth(1);

            if (ROIList.Count > 0)
            {
                window.SetColor(inactiveCol);
                window.SetDraw("margin");

                for (int i = 0; i < ROIList.Count; i++)
                {
                    window.SetLineStyle(ROIList[i].FlagLineStyle);
                    ROIList[i].ImageWidth = imageWidth;
                    ROIList[i].TxtScale   = txtScale;
                    if (ROIList[i].OperatorFlag == ROIOperation.None)
                    {
                        window.SetColor(serachRegionCol);
                    }
                    else
                    {
                        window.SetColor(inactiveCol);
                    }
                    ROIList[i].Draw(window);
                }

                if (activeROIidx != -1)
                {
                    window.SetColor(activeCol);
                    window.SetLineStyle(ROIList[activeROIidx].FlagLineStyle);
                    ROIList[activeROIidx].Draw(window);

                    window.SetColor(activeHdlCol);
                    ROIList[activeROIidx].DisplayActive(window);
                }
            }
        }
Exemplo n.º 10
0
        /// <summary>
        /// 显示操作点
        /// </summary>
        /// <param name="number"></param>
        /// <param name="hwin"></param>
        public override void displayOperation(int number, HalconDotNet.HWindow hwin)
        {
            hwin.SetColor("red");
            hwin.DispRectangle2(this._rows_y[number].D, this._cols_x[number].D, -this._phi, 5, 5);
            hwin.SetColor("green");
            #region  无用代码
            //switch (number)
            //{
            //    case 0:
            //        hwin.SetColor("red");
            //        hwin.DispRectangle2(this.rows[0].D, this.cols[0].D, this._phi, 25, 25);
            //        hwin.SetColor("green");
            //        break;
            //    case 1:
            //        hwin.SetColor("red");
            //        hwin.DispRectangle2(this.rows[1].D, this.cols[1].D, this._phi, 25, 25);
            //        hwin.SetColor("green");
            //        break;
            //    case 2:
            //        hwin.SetColor("red");
            //        hwin.DispRectangle2(this.rows[0].D, this.cols[0].D, this._phi, 25, 25);
            //        hwin.SetColor("green");
            //        break;
            //    case 3:

            //        break;
            //    case 4:

            //        break;
            //    case 5:

            //        break;
            //    default:
            //        break;
            //}
            #endregion
        }
Exemplo n.º 11
0
        /// <summary>
        /// Paints all objects from the ROIList into the HALCON window
        /// </summary>
        /// <param name="window">HALCON window</param>
        public void paintData(HalconDotNet.HWindow window)
        {
            window.SetDraw("margin");
            window.SetLineWidth(1);

            if (ROIList.Count > 0)
            {
                window.SetDraw("fill");
                window.SetLineStyle(new HTuple());
                window.SetColor("blue");
                defineModelROI();
                if (ModelROI != null)
                {
                    window.DispRegion(ModelROI);
                }

                window.SetColor(inactiveCol);
                window.SetDraw("margin");

                for (int i = 0; i < ROIList.Count; i++)
                {
                    window.SetLineStyle(((ROI)ROIList[i]).flagLineStyle);
                    ((ROI)ROIList[i]).draw(window);
                }

                if (activeROIidx != -1)
                {
                    window.SetColor(activeCol);
                    window.SetLineStyle(((ROI)ROIList[activeROIidx]).flagLineStyle);
                    ((ROI)ROIList[activeROIidx]).draw(window);

                    window.SetColor(activeHdlCol);
                    ((ROI)ROIList[activeROIidx]).displayActive(window);
                }
            }
        }
Exemplo n.º 12
0
        /// <summary>
        /// Repaints the HALCON window 'window'
        /// </summary>
        public void repaint(HalconDotNet.HWindow window)
        {
            int h = imageHeight;

            if (window.IsInitialized() == false || viewPort.HalconID.ToInt32() == -1 || viewPort.ImagePart.Width <= 1 || viewPort.ImagePart.Height <= 1)
            {
                return;
            }
            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);
            }

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

            window.SetColor("black");
            window.DispLine(-100.0, -100.0, -101.0, -101.0);

            for (int i = 0; i < HMsgList.Count; i++)
            {
                if (HMsgList[i].Size != 0)
                {
                    set_display_font(viewPort.HalconID, HMsgList[i].Size, HMsgList[i].Font, HMsgList[i].Bold, HMsgList[i].Slant);
                }
                window.DispText(HMsgList[i].HMsg, HMsgList[i].coordSystem, HMsgList[i].row, HMsgList[i].column, HMsgList[i].color, HMsgList[i].genParamName, HMsgList[i].genParamValue);
            }
        }
Exemplo n.º 13
0
        /// <summary>
        /// 畫格線
        /// </summary>
        private void drawGridLines(HalconDotNet.HWindow window)
        {
            if (this.HLines > 0 || this.VLines > 0)
            {
                //算出水平線間隔
                var interval_H = this.imageHeight / (this.HLines + 1);

                //算出垂直線間隔
                var interval_W = this.imageWidth / (this.VLines + 1);

                //設定線段樣式
                HTuple dotLineStyle = new HTuple(new int[4] {
                    7, 7, 7, 7
                });

                HOperatorSet.SetLineStyle(window, dotLineStyle);
                window.SetColor("red");
                //畫水平線
                for (int i = 0; i < this.HLines; i++)
                {
                    var rowBegin = (i + 1) * interval_H;
                    var rowEnd   = rowBegin;

                    var colBegin = 0;
                    var colEnd   = this.imageWidth;
                    HOperatorSet.DispLine(window, rowBegin, colBegin, rowEnd, colEnd);
                }
                //畫垂直線
                for (int i = 0; i < this.VLines; i++)
                {
                    var rowBegin = 0;
                    var rowEnd   = this.imageHeight;

                    var colBegin = (i + 1) * interval_W;
                    var colEnd   = colBegin;
                    HOperatorSet.DispLine(window, rowBegin, colBegin, rowEnd, colEnd);
                }

                //Reset LineStyle
                HOperatorSet.SetLineStyle(window, null);
            }
        }
Exemplo n.º 14
0
        /// <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);
                }

                //畫格線
                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 發生情境為
                 * 1。開啟擷取影像後,未斷線就關閉 MDI 視窗
                 */
                if (errorNumber != 5106 && errorNumber != 5100)
                {
                    Hanbo.Log.LogManager.Error(ex);
                }
            }
        }