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; //} }
/// <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); }
/// <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; //} }
/// <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); }
/*******************************************************************/ 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); } }
/// <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); }
/*******************************************************************/ 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); } } }
/// <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); } }
/// <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); } }
/*************************************************************************/ /* 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 }
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); }
/*******************************************************************/ 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(); } }
/// <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); } }
/// <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); }
/// <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); } } }
/// <summary>Paints the ROI into the supplied window.</summary> /// <param name="window">HALCON window</param> public virtual void draw(HalconDotNet.HWindow window) { }
/// <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); } }