From 2379434200219132ee252f12d47a1e5efd160f42 Mon Sep 17 00:00:00 2001
From: mrDarker <mr.darker@163.com>
Date: 星期三, 06 八月 2025 15:32:44 +0800
Subject: [PATCH] 1. 实时扫描界面新添两个相机(侧面检)

---
 EdgeInspector_App/View/EdgeImageViewer.cpp |   94 ++++++++++++++++++++++-------------------------
 1 files changed, 44 insertions(+), 50 deletions(-)

diff --git a/EdgeInspector_App/View/EdgeImageViewer.cpp b/EdgeInspector_App/View/EdgeImageViewer.cpp
index 740d629..418d499 100644
--- a/EdgeInspector_App/View/EdgeImageViewer.cpp
+++ b/EdgeInspector_App/View/EdgeImageViewer.cpp
@@ -1,4 +1,4 @@
-#include "stdafx.h"
+锘�#include "stdafx.h"
 #include "EdgeImageViewer.h"
 
 // CEdgeImageViewer
@@ -136,8 +136,8 @@
 {
 	CMenu menu;
 	CMenu popMenu;
-	menu.CreateMenu();  // 弥惑困 焕措 皋春
-	popMenu.CreatePopupMenu();  // 扑诀皋春
+	menu.CreateMenu();  // 寮ユ儜鍥� 鐒曟帾 鐨嬫槬
+	popMenu.CreatePopupMenu();  // 鎵戣瘈鐨嬫槬
 
 	popMenu.AppendMenu(MF_SEPARATOR);
 	popMenu.AppendMenu(MF_STRING, ID_MODE_USER_SELECT,					_T("User Select (Mark/Manual Measure)"));
@@ -230,7 +230,7 @@
 	if(bAllCheck)
 		popMenu.CheckMenuItem(ID_MODE_VIEW_DEFECT_ALL,MF_CHECKED);
 
-	// 牧咆胶飘 皋春 龋免
+	// 鐗у拞鑳堕 鐨嬫槬 榫嬪厤
 	CRect rect;
 	GetWindowRect(rect);
 	int nX = rect.left + point.x;
@@ -498,8 +498,8 @@
 void CEdgeImageViewer::OnPaint()
 {
 	CPaintDC dc(this); // device context for painting
-	// TODO: 咯扁俊 皋矫瘤 贸府扁 内靛甫 眠啊钦聪促.
-	// 弊府扁 皋矫瘤俊 措秦辑绰 CStatic::OnPaint()阑(甫) 龋免窍瘤 付绞矫坷.
+	// TODO: 鍜墎淇� 鐨嬬煫鐦� 璐稿簻鎵� 鍐呴潧鐢� 鐪犲晩閽﹁仾淇�.
+	// 寮婂簻鎵� 鐨嬬煫鐦や繆 鎺Е杈戠话 CStatic::OnPaint()闃�(鐢�) 榫嬪厤绐嶇槫 浠樼粸鐭澐.
 	UpdateView();
 }
 
@@ -529,7 +529,7 @@
 	// 1. Draw Buffer Image
 	UpdateView_Image(&memDC);
 
-	//2. 显示视觉效果
+	//2. 鏄剧ず瑙嗚鏁堟灉
 	UpdateView_VisionResult(&memDC);
 
 
@@ -568,7 +568,7 @@
 	for (int i = 0; i < nCount; i++) {
 		DispVisionResult inf = pSideData->m_vDispVisionResult[i];
 		int nType = inf.nType;
-		if (0 == nType) {   //点
+		if (0 == nType) {   //鐐�
 			CRect rtMarkPos_pxl = CRect(inf.pointX-31, inf.pointY-31, inf.pointX + 31, inf.pointY + 31);
 			CRect rtMarkPos_wnd = GetWndPos(rtMarkPos_pxl);
 			CPoint ptMarkPos_wnd = rtMarkPos_wnd.CenterPoint();
@@ -582,7 +582,7 @@
 				memDC->LineTo(ptMarkPos_wnd.x - 8, ptMarkPos_wnd.y + 8);
 			}
 		}
-		else if (1 == nType) {   //矩形
+		else if (1 == nType) {   //鐭╁舰
 			CRect rtMarkPos_pxl = CRect(inf.rectX1, inf.rectY1, inf.rectX2, inf.rectY2);
 			CRect rtMarkSearchPos_wnd = GetWndPos(rtMarkPos_pxl);
 			if (4 == inf.eVision) {
@@ -598,7 +598,7 @@
 				memDC->Rectangle(rtMarkSearchPos_wnd);
 			}
 		}
-		else if (2 == nType) {   //圆
+		else if (2 == nType) {   //鍦�
 			CRect rtMarkPos_pxl = CRect(inf.circleX - inf.circleRadius, inf.circleY - inf.circleRadius, inf.circleX + inf.circleRadius, inf.circleY + inf.circleRadius);
 			CRect rtMarkSearchPos_wnd = GetWndPos(rtMarkPos_pxl);
 			memDC->SelectObject(&pen);
@@ -609,7 +609,7 @@
 				memDC->Ellipse(rtMarkSearchPos_wnd);
 			}
 		}
-		else if (3 == nType) {   //直线
+		else if (3 == nType) {   //鐩寸嚎
 			CRect rtMarkPos_pxl = CRect(inf.rectX1 - 31, inf.rectY1 - 31, inf.rectX1 + 31, inf.rectY1 + 31);
 			CRect rtMarkPos_wnd = GetWndPos(rtMarkPos_pxl);
 			CPoint pt0 = rtMarkPos_wnd.CenterPoint();
@@ -718,7 +718,7 @@
 	UpdateView_MousePoint(&memDC);
 
 #if HALCON_VISION_KEY
-	//17. 显示vision Rsult
+	//17. 鏄剧ずvision Rsult
 	UpdateView_VisionResult(&memDC);
 #endif // HALCON_VISION_KEY
 
@@ -861,7 +861,7 @@
 	if(m_ptMousePos_Pxl.y < 0 || m_nTotalHeight <= m_ptMousePos_Pxl.y)
 		return;
 
-	int nYPos = m_ptMousePos_Pxl.y - m_ptDisplayStart_pxl.y;	// Recipe View俊辑 Scroll 且 锭 滚欺 困摹甫 官厕;;;
+	int nYPos = m_ptMousePos_Pxl.y - m_ptDisplayStart_pxl.y;	// Recipe View淇婅緫 Scroll 涓� 閿� 婊氭 鍥版懝鐢� 瀹樺帟;;;
 
 	int nPos = (nYPos * m_nFrameWidth) + m_ptMousePos_Pxl.x;
 
@@ -872,7 +872,7 @@
 	memDC->TextOut(10, m_rtWnd.Height() - 45, strTemp);
 
 #if HALCON_VISION_KEY
-	if ((0 != m_ptMouseDown.x || 0 != m_ptMouseDown.y) && BlVision_GetVisionRecipe()->getVisionSetOpen()) {    //鼠标改变
+	if ((0 != m_ptMouseDown.x || 0 != m_ptMouseDown.y) && BlVision_GetVisionRecipe()->getVisionSetOpen()) {    //榧犳爣鏀瑰彉
 		strTemp.Format(_T("(%d / %d)"), m_ptMouseDown.x, m_ptMouseDown.y);
 		memDC->TextOut(10, m_rtWnd.Height() - 25, strTemp);
 
@@ -897,11 +897,13 @@
 
 void CEdgeImageViewer::UpdateView_InspectArea(CDC* memDC)
 {
-	if(m_pBuffer == NULL || memDC == NULL || m_pGlassData == NULL)
+	if (m_pBuffer == NULL || memDC == NULL || m_pGlassData == NULL) {
 		return;
+	}
 
-	if(m_MenuStatus[MODE_VIEW_INSPECT_AREA] == FALSE)
+	if (m_MenuStatus[MODE_VIEW_INSPECT_AREA] == FALSE) {
 		return;
+	}
 
 	CPen pen_SideLine(PS_DASH, 1, RGB(255,127,39));
 	CPen pen_ChamferLine(PS_DASH, 1, RGB(255,255,0));
@@ -916,49 +918,42 @@
 
 	CRect rcTmp,rtRealPos;
 	int nFilterLine;
-	int nChamferLine;
 
-	for(int nFrameIdx = 0; nFrameIdx < MAX_IMAGE_FRAME; nFrameIdx++)
-	{
+	for(int nFrameIdx = 0; nFrameIdx < MAX_IMAGE_FRAME; nFrameIdx++) {
 		CRect rtArea_Inspect = m_pGlassData->GetSideData((DimensionDir) m_nSideIdx)->m_rtInspectArea[nFrameIdx];
-		int nSideLine = m_pGlassData->GetSideData((DimensionDir) m_nSideIdx)->m_nSideLineFrame[nFrameIdx];
-		int nSideChamferLine = m_pGlassData->GetSideData((DimensionDir) m_nSideIdx)->m_nSide_Chamfer_LineFrame[nFrameIdx];
+		int nSideLine = (int)m_pGlassData->GetSideData((DimensionDir) m_nSideIdx)->m_nSideLineFrame[nFrameIdx];
+		int nSideChamferLine = (int)m_pGlassData->GetSideData((DimensionDir) m_nSideIdx)->m_nSide_Chamfer_LineFrame[nFrameIdx];
 
 		// Side Line
 		rtRealPos = rtArea_Inspect;
 		nFilterLine = nSideLine;
 
-		if(0 < nFilterLine)
-		{
+		if(0 < nFilterLine) {
 			memDC->SelectObject(&pen_SideLine);
 			memDC->MoveTo(int((nFilterLine  - m_ptDisplayStart_pxl.x ) * m_dZoom) , int((rtRealPos.top	- m_ptDisplayStart_pxl.y) * m_dZoom));
 			memDC->LineTo(int((nFilterLine - m_ptDisplayStart_pxl.x ) * m_dZoom) , int((rtRealPos.bottom	- m_ptDisplayStart_pxl.y) * m_dZoom));
 		}
 
-		if(0 < nSideChamferLine)
-		{
+		if(0 < nSideChamferLine) {
 			memDC->SelectObject(&pen_ChamferLine);
 			memDC->MoveTo(int((nSideChamferLine  - m_ptDisplayStart_pxl.x ) * m_dZoom) , int((rtRealPos.top	- m_ptDisplayStart_pxl.y) * m_dZoom));
 			memDC->LineTo(int((nSideChamferLine - m_ptDisplayStart_pxl.x ) * m_dZoom) , int((rtRealPos.bottom	- m_ptDisplayStart_pxl.y) * m_dZoom));
 		}
 		
-		for(int nInsType = 0; nInsType < MAX_SIDE_INSPECT_TYPE; nInsType++)
-		{
+		for(int nInsType = 0; nInsType < MAX_SIDE_INSPECT_TYPE; nInsType++) {
 			CRect rtArea = m_pGlassData->GetSideData((DimensionDir) m_nSideIdx)->m_rtInspectArea_InsType[nInsType][nFrameIdx];
 			int nFilterLine = m_pGlassData->GetSideData((DimensionDir) m_nSideIdx)->m_nSideFilterLine_InsType[nInsType][nFrameIdx];
 
 			rtRealPos = rtArea;
 			nFilterLine = nFilterLine;
 
-			if(rtRealPos.IsRectEmpty() != TRUE && rtRealPos.IsRectNull() != TRUE)
-			{
+			if(rtRealPos.IsRectEmpty() != TRUE && rtRealPos.IsRectNull() != TRUE) {
 				rcTmp.left		= int((rtRealPos.left   - m_ptDisplayStart_pxl.x )	* m_dZoom);
 				rcTmp.right		= int((rtRealPos.right  - m_ptDisplayStart_pxl.x )	* m_dZoom);
 				rcTmp.top		= int((rtRealPos.top	- m_ptDisplayStart_pxl.y)	* m_dZoom);
 				rcTmp.bottom	= int((rtRealPos.bottom	- m_ptDisplayStart_pxl.y)	* m_dZoom);
 
-				if(rcTmp.top < 0 && rcTmp.bottom > 0 || rcTmp.top > 0 && rcTmp.top < m_rtWnd.bottom +1 || rcTmp.bottom > 0 && rcTmp.bottom < m_rtWnd.bottom +1)
-				{
+				if(rcTmp.top < 0 && rcTmp.bottom > 0 || rcTmp.top > 0 && rcTmp.top < m_rtWnd.bottom +1 || rcTmp.bottom > 0 && rcTmp.bottom < m_rtWnd.bottom +1) {
 					memDC->SelectObject(&pen_Green);
 					memDC->MoveTo(int((rtRealPos.left  - m_ptDisplayStart_pxl.x ) * m_dZoom) , int((rtRealPos.top	- m_ptDisplayStart_pxl.y) * m_dZoom));
 					memDC->LineTo(int((rtRealPos.right - m_ptDisplayStart_pxl.x ) * m_dZoom) , int((rtRealPos.top	- m_ptDisplayStart_pxl.y) * m_dZoom));
@@ -967,8 +962,7 @@
 					memDC->LineTo(int((rtRealPos.left  - m_ptDisplayStart_pxl.x ) * m_dZoom) , int((rtRealPos.top	- m_ptDisplayStart_pxl.y) * m_dZoom));
 				}
 
-				if(0 < nFilterLine)
-				{
+				if(0 < nFilterLine) {
 					memDC->SelectObject(&pen_FilterLine);
 					memDC->MoveTo(int((nFilterLine  - m_ptDisplayStart_pxl.x ) * m_dZoom) , int((rtRealPos.top	- m_ptDisplayStart_pxl.y) * m_dZoom));
 					memDC->LineTo(int((nFilterLine - m_ptDisplayStart_pxl.x ) * m_dZoom) , int((rtRealPos.bottom	- m_ptDisplayStart_pxl.y) * m_dZoom));
@@ -1044,7 +1038,7 @@
 
 void CEdgeImageViewer::UpdateView_NotchMeasure(CDC* memDC)
 {
-	if(m_pBuffer == NULL || memDC == NULL || m_pGlassData == NULL)
+	if(m_pBuffer == NULL || memDC == NULL || m_pGlassData == NULL || m_pGlassData->GetSideData((DimensionDir)m_nSideIdx) == NULL)
 		return;
 
 	if(m_MenuStatus[MODE_VIEW_NOTCH_MEASURE] == FALSE)
@@ -1068,15 +1062,16 @@
 
 	memDC->SetTextColor(RGB(0,0,255));
 
-	int nNotchCount = m_pGlassData->GetSideData((DimensionDir) m_nSideIdx)->m_nNotchCount;
+	CSide_Data* pSideData = m_pGlassData->GetSideData((DimensionDir)m_nSideIdx);
+	int nNotchCount = pSideData->m_nNotchCount;
 
 	for(int i=0; i<nNotchCount; i++)
 	{
 		for(int j=0; j<MAX_SIDE_NOTCH_MEASURE_COUNT; j++)
 		{
-			CPoint ptRef_pxl = m_pGlassData->GetSideData((DimensionDir) m_nSideIdx)->m_ptNotch_Reference[i][j];
-			CPoint ptDimension_Edge_pxl = m_pGlassData->GetSideData((DimensionDir) m_nSideIdx)->m_ptNotch_Dimension_Edge[i][j];
-			CPoint ptChamfer_Edge_pxl = m_pGlassData->GetSideData((DimensionDir) m_nSideIdx)->m_ptNotch_Chamfer_Edge[i][j];
+			CPoint ptRef_pxl = pSideData->m_ptNotch_Reference[i][j];
+			CPoint ptDimension_Edge_pxl = pSideData->m_ptNotch_Dimension_Edge[i][j];
+			CPoint ptChamfer_Edge_pxl = pSideData->m_ptNotch_Chamfer_Edge[i][j];
 
 			CPoint ptRef_wnd = GetWndPos(ptRef_pxl);
 			CPoint ptDimension_Edge_wnd = GetWndPos(ptDimension_Edge_pxl);
@@ -1088,9 +1083,9 @@
 			memDC->SelectObject(brush_Ref_Rect);
 			memDC->FillRect(&rectRef, &brush_Ref_Rect);
 
-			if(m_pGlassData->GetSideData((DimensionDir) m_nSideIdx)->m_nNotch_Dimension_Edge_Judge[i][j] != 0)
+			if(pSideData->m_nNotch_Dimension_Edge_Judge[i][j] != 0)
 			{
-				if(m_pGlassData->GetSideData((DimensionDir) m_nSideIdx)->m_nNotch_Dimension_Edge_Judge[i][j] == 1)
+				if(pSideData->m_nNotch_Dimension_Edge_Judge[i][j] == 1)
 					memDC->SelectObject(&pen_Solid_Green);
 				else
 					memDC->SelectObject(&pen_Solid_Red);
@@ -1105,9 +1100,9 @@
 				memDC->LineTo(ptDimension_Edge_wnd.x,ptDimension_Edge_wnd.y);
 			}
 
-			if(m_pGlassData->GetSideData((DimensionDir) m_nSideIdx)->m_nNotch_Chamfer_Edge_Judge[i][j] != 0)
+			if(pSideData->m_nNotch_Chamfer_Edge_Judge[i][j] != 0)
 			{
-				if(m_pGlassData->GetSideData((DimensionDir) m_nSideIdx)->m_nNotch_Chamfer_Edge_Judge[i][j] == 1)
+				if(pSideData->m_nNotch_Chamfer_Edge_Judge[i][j] == 1)
 					memDC->SelectObject(&pen_Solid_Green);
 				else
 					memDC->SelectObject(&pen_Solid_Red);
@@ -1122,16 +1117,15 @@
 				memDC->LineTo(ptChamfer_Edge_wnd.x,ptChamfer_Edge_wnd.y);
 			}
 
-			if(m_pGlassData->GetSideData((DimensionDir) m_nSideIdx)->m_nNotch_Dimension_Edge_Judge[i][j] != 0 || 
-				m_pGlassData->GetSideData((DimensionDir) m_nSideIdx)->m_nNotch_Chamfer_Edge_Judge[i][j] != 0)
+			if(pSideData->m_nNotch_Dimension_Edge_Judge[i][j] != 0 || pSideData->m_nNotch_Chamfer_Edge_Judge[i][j] != 0)
 			{
-				if(1 < m_pGlassData->GetSideData((DimensionDir) m_nSideIdx)->m_nNotch_Dimension_Edge_Judge[i][j] || 1 < m_pGlassData->GetSideData((DimensionDir) m_nSideIdx)->m_nNotch_Chamfer_Edge_Judge[i][j])
+				if(1 < pSideData->m_nNotch_Dimension_Edge_Judge[i][j] || 1 < pSideData->m_nNotch_Chamfer_Edge_Judge[i][j])
 					memDC->SetTextColor(RGB(255,0,0));
 				else
 					memDC->SetTextColor(RGB(0,255,0));
 
 				CString strTemp;
-				strTemp.Format(_T("%s"), (CString) m_pGlassData->GetSideData((DimensionDir) m_nSideIdx)->m_strNotchMeasure_Comment[i][j]);
+				strTemp.Format(_T("%s"), (CString)pSideData->m_strNotchMeasure_Comment[i][j]);
 				CRect rtTemp(ptRef_wnd.x + 10, ptRef_wnd.y-10, ptRef_wnd.x + 1024, ptRef_wnd.y + 20);
 				memDC->DrawText(strTemp, rtTemp, DT_LEFT | DT_BOTTOM);
 			}
@@ -1933,7 +1927,7 @@
 	rtCircle.bottom = rtCircle.top + (nDistanceY_wnd * 2);
 	memDC->Arc(rtCircle, CPoint(rtCircle.left, rtCircle.CenterPoint().y), CPoint(rtCircle.left, rtCircle.CenterPoint().y));
 
-	/* 康开 救狼 1/4 盔父 焊捞绊 酵阑锭..
+	/* 搴峰紑 鏁戠嫾 1/4 鐩旂埗 鐒婃崬缁� 閰甸槕閿�..
 	if((ptEnd_Wnd.x < ptStart_Wnd.x && ptEnd_Wnd.y < ptStart_Wnd.y) || (ptEnd_Wnd.x > ptStart_Wnd.x && ptEnd_Wnd.y > ptStart_Wnd.y))
 		memDC->Arc(rtCircle, CPoint(rtCircle.CenterPoint().x, ptEnd_Wnd.y), CPoint(ptEnd_Wnd.x, rtCircle.CenterPoint().y));
 	else
@@ -2240,7 +2234,7 @@
 		for(int nX = m_ptMousePos_Pxl.x -8; nX < m_ptMousePos_Pxl.x + 8 ; nX++)
 		{
 			int nX_pxl = nX;
-			int nY_pxl = nY - m_ptDisplayStart_pxl.y;	// Recipe View俊辑 Scroll 且 锭 滚欺 困摹甫 官厕;;;
+			int nY_pxl = nY - m_ptDisplayStart_pxl.y;	// Recipe View淇婅緫 Scroll 涓� 閿� 婊氭 鍥版懝鐢� 瀹樺帟;;;
 
 			if(nX_pxl < 0 || m_nFrameWidth <= nX_pxl)
 				continue;
@@ -2263,7 +2257,7 @@
 		for(int nX = m_ptMousePos_Pxl.x -8; nX < m_ptMousePos_Pxl.x + 8 ; nX++)
 		{
 			int nX_pxl = nX;
-			int nY_pxl = nY - m_ptDisplayStart_pxl.y;	// Recipe View俊辑 Scroll 且 锭 滚欺 困摹甫 官厕;;;
+			int nY_pxl = nY - m_ptDisplayStart_pxl.y;	// Recipe View淇婅緫 Scroll 涓� 閿� 婊氭 鍥版懝鐢� 瀹樺帟;;;
 
 			if(nX_pxl < 0 || m_nFrameWidth <= nX_pxl)
 				continue;
@@ -2349,7 +2343,7 @@
 #if HALCON_VISION_KEY
 void CEdgeImageViewer::OnLButtonUp(UINT nFlags, CPoint point)
 {
-	// TODO: 在此添加消息处理程序代码和/或调用默认值
+	// TODO: 鍦ㄦ娣诲姞娑堟伅澶勭悊绋嬪簭浠g爜鍜�/鎴栬皟鐢ㄩ粯璁ゅ��
 	m_isMouseDown = FALSE;
 
 	CWnd::OnLButtonUp(nFlags, point);

--
Gitblit v1.9.3