/*************************************************************************/ /* Event handling for keyboard */ /*************************************************************************/ private void viewPort_KeyDown(object sender, System.Windows.Forms.KeyEventArgs e) { //roi not null,roi selected ,show roi if (roiManager != null && (roiManager.activeROIidx != -1) && (dispROI == MODE_INCLUDE_ROI)) { switch (e.KeyCode) { case System.Windows.Forms.Keys.W: //up roiManager.mouseMoveAction(roiManager.CurrentX, roiManager.CurrentY - 1); Console.WriteLine("W-UP"); break; case System.Windows.Forms.Keys.S: //down roiManager.mouseMoveAction(roiManager.CurrentX, roiManager.CurrentY + 1); Console.WriteLine("S-DOWN"); break; case System.Windows.Forms.Keys.A: //left roiManager.mouseMoveAction(roiManager.CurrentX - 1, roiManager.CurrentY); Console.WriteLine("A-LEFT"); break; case System.Windows.Forms.Keys.D: //right roiManager.mouseMoveAction(roiManager.CurrentX + 1, roiManager.CurrentY); Console.WriteLine("D-RIGHT"); break; case System.Windows.Forms.Keys.Up: roiManager.mouseMoveAction(roiManager.CurrentX + 1, roiManager.CurrentY); break; case System.Windows.Forms.Keys.Down: roiManager.mouseMoveAction(roiManager.CurrentX - 1, roiManager.CurrentY); break; case System.Windows.Forms.Keys.Left: roiManager.mouseMoveAction(roiManager.CurrentX, roiManager.CurrentY - 1); break; case System.Windows.Forms.Keys.Right: roiManager.mouseMoveAction(roiManager.CurrentX, roiManager.CurrentY + 1); break; default: return; } roiManager.NotifyRCObserver(ROIController.EVENT_UPDATE_ROI); } }
private void ViewPort_HMouseMove(object sender, HMouseEventArgsWPF e) { if (stateView == MODE_ROI_Create) { return; } double motionX, motionY; double posX, posY; double zoomZone; int a = roiManager.mouseMoveROI(e.Column, e.Row);//鼠标经过的index if (!mousePressed) { return; } if (roiManager != null && (roiManager.activeROIidx != -1) && (dispROI == MODE_INCLUDE_ROI)) { roiManager.mouseMoveAction(e.Column, e.Row); } else if (stateView == MODE_VIEW_MOVE) { motionX = ((e.Column - startX)); motionY = ((e.Row - startY)); if (((int)motionX != 0) || ((int)motionY != 0)) { moveImage(motionX, motionY); startX = e.Column - motionX; startY = e.Row - motionY; } } else if (stateView == MODE_VIEW_ZOOMWINDOW) { HSystem.SetSystem("flush_graphic", "false"); ZoomWindow.ClearWindow(); posX = ((e.Column - ImgCol1) / (ImgCol2 - ImgCol1)) * viewPort.ActualWidth; posY = ((e.Row - ImgRow1) / (ImgRow2 - ImgRow1)) * viewPort.ActualHeight; zoomZone = (zoomWndSize / 2) * zoomWndFactor * zoomAddOn; ZoomWindow.SetWindowExtents((int)posY - (zoomWndSize / 2), (int)posX - (zoomWndSize / 2), zoomWndSize, zoomWndSize); ZoomWindow.SetPart((int)(e.Row - zoomZone), (int)(e.Column - zoomZone), (int)(e.Row + zoomZone), (int)(e.Column + zoomZone)); repaint(ZoomWindow); HSystem.SetSystem("flush_graphic", "true"); ZoomWindow.DispLine(-100.0, -100.0, -100.0, -100.0); } }
/*******************************************************************/ private void mouseMoved(object sender, HalconDotNet.HMouseEventArgs e) { //lock (mmlocker) //{ 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; } } 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)); repaint(ZoomWindow); HSystem.SetSystem("flush_graphic", "true"); ZoomWindow.DispLine(-100.0, -100.0, -100.0, -100.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); } } }
/*******************************************************************/ private void mouseMoved(object sender, HalconDotNet.HMouseEventArgs e) { double motionX, motionY; double posX, posY; double zoomZone; //if (viewPort.) int count = HObjList.Count; foreach (var item in HObjList) //实时显示图片的灰度 灰度显示 { HObjectEntry objNow = (HObjectEntry)item; if (objNow.HObj is HImage) { try{ HObject myImg = new HObject(); if (!objNow.HObj.IsInitialized()) { break; } //HOperatorSet.CopyObj(objNow.HObj, out myImg, 1, -1); HTuple Gray = new HTuple(); HTuple Wid, Hei; HOperatorSet.GetImageSize(objNow.HObj, out Wid, out Hei); if (0 < e.Y && e.Y < Hei && 0 < e.X && e.X < Wid) { repaint(viewPort.HalconWindow); HOperatorSet.GetGrayval(objNow.HObj, e.Y, e.X, out Gray); double scale = (ImgRow2 - ImgRow1) / Hei.D; //HOperatorSet.SetTposition(viewPort.HalconWindow, ImgRow2 - 400 * scale, ImgCol2 - 400 * scale); HOperatorSet.SetTposition(viewPort.HalconWindow, e.Y + 20 * scale, e.X + 50 * scale); HOperatorSet.SetColor(viewPort.HalconWindow, "red"); HOperatorSet.WriteString(viewPort.HalconWindow, "R:" + ((int)e.Y).ToString() + " " + "C:" + ((int)e.X).ToString() + " " + ((int)Gray[0].D).ToString()); } //myImg.Dispose(); break; } catch { break; } } } 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; } } 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)); repaint(ZoomWindow); HSystem.SetSystem("flush_graphic", "true"); ZoomWindow.DispLine(-100.0, -100.0, -100.0, -100.0); } }
/*******************************************************************/ private void mouseMoved(object sender, HalconDotNet.HMouseEventArgs e) { if (e.Button != MouseButtons.Left) { mousePressed = true; int activeROIidx = -1; //double scale; startX = e.X; startY = e.Y; if (roiManager != null) { activeROIidx = roiManager.mouseDownAction(e.X, e.Y); } MouseMove me = new MouseMove(); try { if (HObjList.Count > 0) { HTuple gray = 0; HObjectEntry entry = (HObjectEntry)HObjList[0]; if ((e.Y >= 0) && (e.X >= 0)) { HOperatorSet.GetGrayval(entry.HObj, e.Y, e.X, out gray); me.Gray = (uint)gray.I; } } } catch { me.Gray = 0; } me.X = (int)e.X + 1; //图像从0开始,显示数据从1开始 me.Y = (int)e.Y + 1; MouseMoveEventOutput(me); } else { double motionX, motionY; if (!mousePressed) { return; } if (roiManager != null && (roiManager.activeROIidx != -1)) { roiManager.mouseMoveAction(e.X, e.Y); } else { if (!isCancelImageMove) { 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; } } } } }