Esempio n. 1
1
        private void Window_HMouseMove(object sender, HalconDotNet.HMouseEventArgs e)
        {
            
            mousePosition.GetMposition(Window.HalconWindow);
            imagestatus_column.Text = mousePosition.col.ToString();
            imagestatus_row.Text = mousePosition.row.ToString();
            imagestatus_gravalue.Text = window_image.PiexlGrayval(mousePosition).ToString();

            if (window_image.GetImage != null && flag == true && mousePosition_pre != null)
            {
                HTuple diff_row, diff_col;
                diff_row = mousePosition.row - mousePosition_pre.row;
                diff_col = mousePosition.col - mousePosition_pre.col;
                mousePosition.GetMpositionSubPix(Window.HalconWindow);
                HOperatorSet.GetPart(Window.HalconWindow, out current_beginRow, out current_beginCol, out current_endRow, out current_endCol);
                HOperatorSet.ClearWindow(Window.HalconWindow);
                HOperatorSet.SetPaint(Window.HalconWindow, new HTuple("default"));//保持图像显示比例
                HOperatorSet.SetPart(Window.HalconWindow, current_beginRow- diff_row, current_beginCol-diff_col, current_endRow- diff_row, current_endCol-diff_col);
                HOperatorSet.DispObj(window_image.GetImage, Window.HalconWindow);

            }
            mousePosition_pre.GetMposition(Window.HalconWindow);

            //if (window_region != null)
            //{
            //    window_region.showROI(Window.HalconWindow);
            //}

        }
 /// <summary>
 /// 顯示控制點
 /// </summary>
 /// <param name="window"></param>
 public override void displayActive(HalconDotNet.HWindow window)
 {
     var rectangleSize = 10;
     switch (activeHandleIdx)
     {
         case 0:
             window.DispRectangle2(this.NewCenterRow, this.NewCenterCol, 0, rectangleSize, rectangleSize);
             break;
     }
 }
        /// <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)
                HOperatorSet.SetColor(window, "magenta");

            //HOperatorSet.SetDraw(window, "fill");
            HOperatorSet.SetLineWidth(window, 2);
            HOperatorSet.DispCross(window, _model.RowBegin, _model.ColBegin, crossSize, crossAngle);

            //畫相依的線元素 (ROI)
            window.SetLineWidth(2);
            if (!this.IsActive)
                HOperatorSet.SetColor(window, "magenta");
            for (var i = 0; i < _lines.Count; i++)
            {
                var line = _lines[i];
                window.DispLine(line.RowBegin, line.ColBegin, line.RowEnd, line.ColEnd);
            }
        }
 private void CreatMatchingModel_window_HMouseMove(object sender, HalconDotNet.HMouseEventArgs e)
 {
     PointBase mousePosition = new PointBase();
     //取得滑鼠在視窗上的位置
     mousePosition.GetMposition(CreateMatchingModel_window.HalconWindow);
     //顯示位置
     MouseXY.Text = "Mouse(" + mousePosition.col.ToString() + "," + mousePosition.row.ToString() + ")";
     //顯示滑鼠位置的灰階值
     pixelvalue.Text = "pixelvalue =" + CreateMatchingModel_window_image.PiexlGrayval(mousePosition).ToString();
 }
 /// <summary>
 /// 顯示控制點
 /// </summary>
 /// <param name="window"></param>
 public override void displayActive(HalconDotNet.HWindow window)
 {
     //var rectangleSize = 10;
     //switch (activeHandleIdx)
     //{
     //	case 0:
     //		//window.DispRectangle2(this.NewCenterRow, this.NewCenterCol, 0, rectangleSize, rectangleSize);
     //		break;
     //}
 }
Esempio n. 6
0
 /// <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.DispRectangle2(midR, midC, 0, 5, 5);
             break;
     }
 }
 /// <summary>
 /// ROI 長啥樣
 /// </summary>
 /// <param name="window"></param>		
 public override void draw(HalconDotNet.HWindow window)
 {
     //一個圓
     if (_CircleContour == null)
     {
         //window.DispCircle(_midR, _midC, _radius);
         //HObject contour = null;
         //contour.DispObj(window);
         HOperatorSet.GenCircleContourXld(out _CircleContour, _midR, _midC, _radius, 0, 4 * ((new HTuple(0)).TupleAcos()), "positive", 1);
     }
     _CircleContour.DispObj(window);
 }
Esempio n. 8
0
 /// <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;
     }
 }
 /// <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>
 /// 顯示控制點
 /// </summary>
 /// <param name="window"></param>
 public override void displayActive(HalconDotNet.HWindow window)
 {
     //var rectangleSize = 10;
     //switch (activeHandleIdx)
     //{
     //	case 0:
     //		window.SetLineWidth(2);
     //		window.SetColor("green");
     //		for (var i = 0; i < _lines.Count; i++)
     //		{
     //			var line = _lines[i];
     //			if (isLine(line))
     //			{
     //				//draw line,ROI 的線
     //				window.DispLine(line.RowBegin, line.ColBegin, line.RowEnd, line.ColEnd);
     //			}
     //		}
     //		//reset
     //		window.SetLineWidth(1);
     //		break;
     //}
 }
Esempio n. 11
0
        /// <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;

            HTuple dotLineStyle = new HTuple(new int[4] { 7, 7, 7, 7 });
            //Reset line Style
            HOperatorSet.SetLineStyle(window, null);
            if (!_initPointsDone)
            {
                foreach (var dot in _clickedPointsPositionList)
                {
                    HOperatorSet.DispCross(window, dot.RowBegin, dot.ColBegin, crossSize, crossAngle);
                }
            }
            else
            {
                //畫中心點
                window.DispRectangle2(midR, midC, -phi, length1, length2);

                //畫其它的控制點
                for (int i = 0; i < NumHandles; i++)
                    window.DispRectangle2(rows[i].D, cols[i].D, -phi, 5, 5);

            }
        }
        /// <summary> 
        /// Paints the active handle of the ROI object into the supplied window
        /// </summary>
        /// <param name="window">HALCON window</param>
        public override void displayActive(HalconDotNet.HWindow window)
        {
            window.DispRectangle2(rows[activeHandleIdx].D,
                                  cols[activeHandleIdx].D,
                                  -phi, 5, 5);

            if (activeHandleIdx == 5)
                window.DispArrow(midR, midC,
                                 midR + (Math.Sin(phi) * length1 * 1.2),
                                 midC + (Math.Cos(phi) * length1 * 1.2),
                                 2.0);
        }
Esempio n. 13
0
        /*******************************************************************/
        private void mouseMoved(object sender, HalconDotNet.HMouseEventArgs e)
        {
            double motionX, motionY;
              double posX, posY;
              double zoomZone;

              if (!mousePressed)
              {
            return;
              }

              if (roiManager != null && (roiManager.activeROIidx != -1) && (dispROI == MODE_INCLUDE_ROI))
              {
            roiManager.mouseMoveAction(e.X, e.Y);
              }
              else if (stateView == MODE_VIEW_MOVE)
              {
            motionX = ((e.X - startX));
            motionY = ((e.Y - startY));

            if (((int)motionX != 0) || ((int)motionY != 0))
            {
              moveImage(motionX, motionY);
              startX = e.X - motionX;
              startY = e.Y - motionY;
              if (OnImageMoved != null)
                  OnImageMoved(this, motionX, motionY);
            }
              }
              else if (stateView == MODE_VIEW_ZOOMWINDOW)
              {
            HSystem.SetSystem("flush_graphic", "false");
            ZoomWindow.ClearWindow();

            posX = ((e.X - ImgCol1) / (ImgCol2 - ImgCol1)) * viewPort.Width;
            posY = ((e.Y - ImgRow1) / (ImgRow2 - ImgRow1)) * viewPort.Height;
            zoomZone = (zoomWndSize / 2) * zoomWndFactor * zoomAddOn;

            ZoomWindow.SetWindowExtents((int)posY - (zoomWndSize / 2),
                                        (int)posX - (zoomWndSize / 2),
                                        zoomWndSize, zoomWndSize);
            ZoomWindow.SetPart((int)(e.Y - zoomZone), (int)(e.X - zoomZone),
                                (int)(e.Y + zoomZone), (int)(e.X + zoomZone));
            repaintUsingFlushGraphic(ZoomWindow);

            HSystem.SetSystem("flush_graphic", "true");
            ZoomWindow.DispLine(-1000.0, -1000.0, -1000.0, -1000.0);
              }
        }
Esempio n. 14
0
        /// <summary>
        /// draw, 決定要畫什麼在 window 上
        /// </summary>
        /// <param name="window">Halcon Window</param>
        public override void draw(HalconDotNet.HWindow window)
        {
            double arrowSize = 2;
            //double crossSize = 12;
            //double crossAngle = 0.785398;

            HTuple dotLineStyle = new HTuple(new int[4] { 7, 7, 7, 7 });
            //Reset line Style
            HOperatorSet.SetLineStyle(window, null);

            //寫字
            if (!String.IsNullOrEmpty(Name))
            {
                if (!this.IsActive)
                    HOperatorSet.SetColor(window, "red");

                HOperatorSet.SetTposition(window, this.NewCenterRow, this.NewCenterCol);
                window.WriteString(Name);
            }

            //畫線段,水平 + 30 度角
            var lineLength = 50;
            var angle = Math.PI / 6.0;
            var hLineRow = this.NewCenterRow + Math.Sin(Math.PI) * lineLength;
            var hLineCol = this.NewCenterCol - Math.Cos(Math.PI) * lineLength;
            var degLineRow = this.NewCenterRow - Math.Sin(angle) * lineLength;
            var degLineCol = this.NewCenterCol + Math.Cos(angle) * lineLength;
            HOperatorSet.DispLine(window, this.NewCenterRow, this.NewCenterCol, hLineRow, hLineCol);
            HOperatorSet.DispLine(window, this.NewCenterRow, this.NewCenterCol, degLineRow, degLineCol);

            //畫 arc
            // angle 為正時,會順時針畫,
            // angle 為負時,會逆時針畫,
            // 因此要注意兩線段夾角的開口方向來選擇
            var arcBeginRow = this.NewCenterRow - Math.Sin(angle) * (lineLength / 2.0);
            var arcBeginCol = this.NewCenterCol + Math.Cos(angle) * (lineLength / 2.0);

            window.DispArc(this.NewCenterRow, this.NewCenterCol, angle, arcBeginRow, arcBeginCol);

            // 畫箭頭,
            window.SetLineWidth(1);
            HOperatorSet.SetLineStyle(window, dotLineStyle);

            window.DispArrow(this.NewCenterRow, this.NewCenterCol, _lineACenterRow, _lineACenterCol, arrowSize);
            window.DispArrow(this.NewCenterRow, this.NewCenterCol, _lineBCenterRow, _lineBCenterCol, arrowSize);

            //Reset line Style
            HOperatorSet.SetLineStyle(window, null);

            //畫ROI
            window.SetLineWidth(2);
            if (!this.IsActive)
                HOperatorSet.SetColor(window, "magenta");

            for (var i = 0; i < _lines.Count; i++)
            {
                var line = _lines[i];
                if (isLine(line))
                {
                    //draw line,ROI 的線
                    window.DispLine(line.RowBegin, line.ColBegin, line.RowEnd, line.ColEnd);
                }
            }
        }
 /// <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);
 }
Esempio n. 16
0
        /*******************************************************************/
        private void mouseMoved(object sender, HalconDotNet.HMouseEventArgs e)
        {
            double motionX, motionY;
            if (_stateView == MODE_VIEW_ZOOMCONTINUE)
            {
                doZoomContinueAction(e);
                return;
            }

            if (!_mousePressed)
                return;

            if (_roiManager != null && (_roiManager.activeROIidx != -1) && (_dispROI == MODE_INCLUDE_ROI))
            {
                _roiManager.mouseMoveAction(e.X, e.Y);
            }
            else if (_stateView == MODE_VIEW_MOVE)
            {
                motionX = ((e.X - _moveStartX));
                motionY = ((e.Y - _moveStartY));

                if (((int)motionX != 0) || ((int)motionY != 0))
                {
                    moveImage(motionX, motionY);
                    _moveStartX = e.X - motionX;
                    _moveStartY = e.Y - motionY;
                }
            }
            else if (_stateView == MODE_VIEW_ZOOMWINDOW)
            {
                if (ZoomWindow != null)
                {
                    resetZoomWindow(e);
                }
            }
        }
Esempio n. 17
0
        /// <summary>
        /// �e��u
        /// </summary>
        private void drawGridLines(HalconDotNet.HWindow window)
        {
            if (this.HLines > 0 || this.VLines > 0)
            {
                //��X����u���j
                var interval_H = this.imageHeight / (this.HLines + 1);

                //��X�����u���j
                var interval_W = this.imageWidth / (this.VLines + 1);

                //�]�w�u�q�˦�
                HTuple dotLineStyle = new HTuple(new int[4] { 7, 7, 7, 7 });

                HOperatorSet.SetLineStyle(window, dotLineStyle);
                window.SetColor("red");
                //�e����u
                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);
                }
                //�e�����u
                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);
            }
        }
Esempio n. 18
0
        /// <summary>Paints the ROI into the supplied window</summary>
        /// <param name="window">HALCON window</param>
        public override void draw(HalconDotNet.HWindow window)
        {
            if (_initPointsDone)
            {
                //畫中心點
                window.DispRectangle2(midR, midC, -phi, length1, length2);

                //畫其它的控制點
                //for (int i = 0; i < NumHandles; i++)
                //	window.DispRectangle2(rows[i].D, cols[i].D, -phi, 5, 5);

            }
        }
Esempio n. 19
0
        /*************************************************************************/
        /*      			 Event handling for mouse	   	                     */
        /*************************************************************************/
        private void mouseDown(object sender, HalconDotNet.HMouseEventArgs e)
        {
            mousePressed = true;
              int activeROIidx = -1;
              double scale;

              if (roiManager != null && (dispROI == MODE_INCLUDE_ROI))
              {
            activeROIidx = roiManager.mouseDownAction(e.X, e.Y);
              }

              if (activeROIidx == -1)
              {
            switch (stateView)
            {
              case MODE_VIEW_MOVE:
                startX = e.X;
                startY = e.Y;
                break;
              case MODE_VIEW_ZOOM:
                if (e.Button == System.Windows.Forms.MouseButtons.Left)
                  scale = 0.9;
                else
                  scale = 1 / 0.9;
                zoomImage(e.X, e.Y, scale);
                break;
              case MODE_VIEW_NONE:
                break;
              case MODE_VIEW_ZOOMWINDOW:
                activateZoomWindow((int)e.X, (int)e.Y);
                break;
              default:
                break;
            }
              }
              //end of if
        }
Esempio n. 20
0
 public void mouseWheel(object sender, HalconDotNet.HMouseEventArgs e)
 {
     if (e.Delta > 0)
     zoomImage(e.X, e.Y, 0.9);
       else
     zoomImage(e.X, e.Y, 1.1);
 }
Esempio n. 21
0
        /*******************************************************************/
        private void mouseUp(object sender, HalconDotNet.HMouseEventArgs e)
        {
            mousePressed = false;

              if (roiManager != null
              && (roiManager.activeROIidx != -1)
              && (dispROI == MODE_INCLUDE_ROI))
              {
            roiManager.NotifyRCObserver(ROIController.EVENT_UPDATE_ROI);
              }
              else if (stateView == MODE_VIEW_ZOOMWINDOW)
              {
            ZoomWindow.Dispose();
              }
        }
Esempio n. 22
0
        /// <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);
              }
        }
Esempio n. 23
0
        /// <summary>
        /// Repaints the HALCON window 'window' using BufferWindow
        /// </summary>
        public void repaintUsingBufferWindow(HalconDotNet.HWindow window)
        {
            int count = HObjList.Count;
              HObjectEntry entry;

              // modified
              if ((windowWidth > 0) && (windowHeight > 0))
              {
              if (bufferWindow == null)
              {
                  bufferWindow = new HWindow(0, 0, windowWidth, windowHeight, "root", "buffer", "");
                  // check the boundatries of the image part
                  if ((ImgRow2 > ImgRow1) && (ImgCol2 > ImgCol1))
                      bufferWindow.SetPart((int)ImgRow1, (int)ImgCol1, (int)ImgRow2, (int)ImgCol2);
                  // set the image part to window size
                  else
                      bufferWindow.SetPart(0, 0, windowHeight - 1, windowWidth - 1);
              }
              else
                  bufferWindow.ClearWindow();

            mGC.stateOfSettings.Clear();

            // display the graphic stack on the buffer window
            for (int i = 0; i < count; i++)
            {
              entry = ((HObjectEntry)HObjList[i]);
              if (entry != null)
              {
                  mGC.applyContext(window, entry.gContext);
                  mGC.applyContext(bufferWindow, entry.gContext);
                  bufferWindow.DispObj(entry.HObj);
              }
            }

            addInfoDelegate();

            // if any rois exists add this to buffer window
            if (roiManager != null && (dispROI == MODE_INCLUDE_ROI))
              roiManager.paintData(bufferWindow);

            // copy the content of buffer window to HWindow
            bufferWindow.CopyRectangle(window, 0, 0, windowHeight - 1, windowWidth - 1, 0, 0);

            // dispose the buffer window
            bufferWindow.Dispose();
            bufferWindow = null;
              }
        }
        /// <summary>Paints the ROI into the supplied window</summary>
        /// <param name="window">HALCON window</param>
        public override void draw(HalconDotNet.HWindow window)
        {
            var w = _HandleRectangleWidth * _ZoomRatio;
            var h = _HandleRectangleHeight * _ZoomRatio;
            var arrowSize = _ArrowSize * _ZoomRatio;

            window.DispRectangle2(midR, midC, -phi, length1, length2);
            for (int i = 0; i < NumHandles; i++)
                window.DispRectangle2(rows[i].D, cols[i].D, -phi, w, h);

            window.DispArrow(midR, midC, midR + (Math.Sin(phi) * length1 * 1.2),
                midC + (Math.Cos(phi) * length1 * 1.2), arrowSize);
        }
        /// <summary>Paints the ROI into the supplied window</summary>
        /// <param name="window">HALCON window</param>
        public override void draw(HalconDotNet.HWindow window)
        {
            window.DispRectangle2(midR, midC, -phi, length1, length2);
            for (int i =0; i < NumHandles; i++)
                window.DispRectangle2(rows[i].D, cols[i].D, -phi, 5, 5);

            window.DispArrow(midR, midC, midR + (Math.Sin(phi) * length1 * 1.2),
                midC + (Math.Cos(phi) * length1 * 1.2), 2.0);
        }
Esempio n. 26
0
 /// <summary> 
 /// Paints the active handle of the ROI object into the supplied window. 
 /// </summary>
 /// <param name="window">HALCON window</param>
 public virtual void displayActive(HalconDotNet.HWindow window)
 {
 }
        /// <summary>
        /// draw, 決定要畫什麼在 window 上
        /// </summary>
        /// <param name="window">Halcon Window</param>
        public override void draw(HalconDotNet.HWindow window)
        {
            double arrowSize = 2;
            double crossSize = 12;
            double crossAngle = 0.785398;

            HTuple dotLineStyle = new HTuple(new int[4] { 7, 7, 7, 7 });
            //Reset line Style
            HOperatorSet.SetLineStyle(window, null);

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

            // 畫箭頭, 由線段的中心點向兩端畫箭頭
            window.SetLineWidth(1);

            //計算兩箭頭端點位置
            var arrowPointRowBegin = _arrowLineRowBegin = this.NewCenterRow + (Math.Sin(_phiStart) * _halfDistance);
            var arrowPointColBegin = _arrowLineColBegin = this.NewCenterCol + (Math.Cos(_phiStart) * _halfDistance);

            var arrowPointRowEnd = _arrowLineRowEnd = this.NewCenterRow + (Math.Sin(_phiEnd) * _halfDistance);
            var arrowPointColEnd = _arrowLineColEnd = this.NewCenterCol + (Math.Cos(_phiEnd) * _halfDistance);

            window.DispArrow(this.NewCenterRow, this.NewCenterCol, arrowPointRowBegin, arrowPointColBegin, arrowSize);
            window.DispArrow(this.NewCenterRow, this.NewCenterCol, arrowPointRowEnd, arrowPointColEnd, arrowSize);

            //畫虛線,如果使用者改變了原始中心點的位置
            //由兩箭頭端點連結原始的起始兩端點
            if (_rawCenterRow != this.NewCenterRow || _rawCenterCol != this.NewCenterCol)
            {
                HOperatorSet.SetLineStyle(window, dotLineStyle);
                //決定兩個端點的連結,將座標點 以左上排序
                var arrowPoints = new List<PositionModel>() {
                    new PositionModel(){ RowBegin =arrowPointRowBegin, ColBegin = arrowPointColBegin },
                    new PositionModel(){ RowBegin =arrowPointRowEnd, ColBegin = arrowPointColEnd },
                };

                arrowPoints = arrowPoints.OrderBy(x => x.ColBegin).OrderBy(y => y.RowBegin).ToList();

                for (int i = 0; i < _ROIModelPoints.Count; i++)
                    window.DispLine(arrowPoints[i].RowBegin, arrowPoints[i].ColBegin, _ROIModelPoints[i].RowBegin, _ROIModelPoints[i].ColBegin);
            }

            //reset Style
            HOperatorSet.SetLineStyle(window, null);

            //畫ROI
            window.SetLineWidth(1);
            if (!this.IsActive)
                HOperatorSet.SetColor(window, "magenta");
            for (var i = 0; i < _dependROIModels.Count; i++)
            {
                var line = _dependROIModels[i];
                if (isLine(line))
                {
                    //draw line,ROI 的線
                    window.DispLine(line.RowBegin, line.ColBegin, line.RowEnd, line.ColEnd);
                }
                else
                {
                    //draw point,ROI 的點
                    HXLDCont crossPoint = new HXLDCont();
                    crossPoint.GenEmptyObj();
                    crossPoint.GenCrossContourXld(line.RowBegin, line.ColBegin, crossSize, crossAngle);
                    crossPoint.DispObj(window);
                    //window.DispCross(line.RowBegin, line.ColBegin, crossSize, crossAngle);
                }
            }
        }
Esempio n. 28
0
 /// <summary>Paints the ROI into the supplied window.</summary>
 /// <param name="window">HALCON window</param>
 public virtual void draw(HalconDotNet.HWindow window)
 {
 }
Esempio n. 29
0
        /// <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>
        /// draw, 決定要畫什麼在 window 上
        /// </summary>
        /// <param name="window">Halcon Window</param>
        public override void draw(HalconDotNet.HWindow window)
        {
            //虛線
            HTuple dotLineStyle = new HTuple(new int[4] { 20, 7, 3, 7 });

            //寫字
            if (!String.IsNullOrEmpty(Name))
            {
                if (!this.IsActive)
                    window.SetColor("red");

                HOperatorSet.SetTposition(window, _rawCenterRow, _rawCenterCol);
                window.WriteString(Name);
            }

            //Draw 中線
            window.SetLineStyle(dotLineStyle);
            window.DispLine(_model.RowBegin, _model.ColBegin, _model.RowEnd, _model.ColEnd);

            //Reset line Style
            HOperatorSet.SetLineStyle(window, null);

            //畫相依的線元素 (ROI)
            window.SetLineWidth(2);
            if (!this.IsActive)
                HOperatorSet.SetColor(window, "magenta");
            for (var i = 0; i < _lines.Count; i++)
            {
                var line = _lines[i];
                window.DispLine(line.RowBegin, line.ColBegin, line.RowEnd, line.ColEnd);
            }
        }