| 
						
						
							
								
							
						
						
					 | 
					 | 
					@ -10,19 +10,7 @@
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					#define FILE_CCD_IMAGE_INFO_PATH _T("ccd_image_info.csv")
 | 
					 | 
					 | 
					 | 
					#define FILE_CCD_IMAGE_INFO_PATH _T("ccd_image_info.csv")
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					#define FILE_CCD_DATAT_PATH _T("ccd_data_path.csv")
 | 
					 | 
					 | 
					 | 
					#define FILE_CCD_DATAT_PATH _T("ccd_data_path.csv")
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					// 颜色定义
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					#define RED     RGB(255, 0, 0)
 | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					#define ORANGE  RGB(255, 165, 0)
 | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					#define YELLOW  RGB(255, 255, 0)
 | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					#define GREEN   RGB(0, 255, 0)
 | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					#define CYAN    RGB(0, 255, 255)
 | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					#define BLUE    RGB(0, 0, 255)
 | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					#define PURPLE  RGB(128, 0, 128)
 | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					#define GREY    RGB(169, 169, 169)
 | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					#define PINK    RGB(255, 192, 203)
 | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					#define BLACK   RGB(0, 0, 0)
 | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					#define WHITE   RGB(255, 255, 255)
 | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					#define BROWN   RGB(165, 42, 42)
 | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					// 控件ID映射
 | 
					 | 
					 | 
					 | 
					// 控件ID映射
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					const int minEnergyCtrlIds[] = { IDC_MIN_ENERGY_EDIT1, IDC_MIN_ENERGY_EDIT2, IDC_MIN_ENERGY_EDIT3,
 | 
					 | 
					 | 
					 | 
					const int minEnergyCtrlIds[] = { IDC_MIN_ENERGY_EDIT1, IDC_MIN_ENERGY_EDIT2, IDC_MIN_ENERGY_EDIT3,
 | 
				
			
			
		
	
	
		
		
			
				
					| 
						
							
								
							
						
						
							
								
							
						
						
					 | 
					 | 
					@ -53,8 +41,8 @@ const TCHAR* colorNames[] = {
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					#ifdef _DEBUG
 | 
					 | 
					 | 
					 | 
					#ifdef _DEBUG
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					#define new DEBUG_NEW
 | 
					 | 
					 | 
					 | 
					#define new DEBUG_NEW
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					#endif
 | 
					 | 
					 | 
					 | 
					#endif
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					ColorSchemeManager m_colorSchemeManager;
 | 
					 | 
					 | 
					 | 
					//ColorSchemeManager m_colorSchemeManager;
 | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					std::map<const int, int> m_proportionEnergy;
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
				
				
			
		
	
		
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					// 用于应用程序“关于”菜单项的 CAboutDlg 对话框
 | 
					 | 
					 | 
					 | 
					// 用于应用程序“关于”菜单项的 CAboutDlg 对话框
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
	
		
		
			
				
					| 
						
							
								
							
						
						
							
								
							
						
						
					 | 
					 | 
					@ -171,11 +159,12 @@ void CCcdDataImageProcessingDlg::DoDataExchange(CDataExchange* pDX)
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						DDX_Control(pDX, IDC_CCD_DATA_PATH_EDIT, m_CddDataPath);
 | 
					 | 
					 | 
					 | 
						DDX_Control(pDX, IDC_CCD_DATA_PATH_EDIT, m_CddDataPath);
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
						DDX_Control(pDX, IDC_PIC_CTRL, m_PicCtrl);
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					}
 | 
					 | 
					 | 
					 | 
					}
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					BEGIN_MESSAGE_MAP(CCcdDataImageProcessingDlg, CDialogEx)
 | 
					 | 
					 | 
					 | 
					BEGIN_MESSAGE_MAP(CCcdDataImageProcessingDlg, CDialogEx)
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						ON_WM_SYSCOMMAND()
 | 
					 | 
					 | 
					 | 
						ON_WM_SYSCOMMAND()
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						ON_WM_PAINT()
 | 
					 | 
					 | 
					 | 
					//	ON_WM_PAINT()
 | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						ON_WM_QUERYDRAGICON()
 | 
					 | 
					 | 
					 | 
						ON_WM_QUERYDRAGICON()
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						ON_BN_CLICKED(IDC_IMAGE_INFO_SAVE_BUTTON, &CCcdDataImageProcessingDlg::OnBnClickedImageInfoSaveButton)
 | 
					 | 
					 | 
					 | 
						ON_BN_CLICKED(IDC_IMAGE_INFO_SAVE_BUTTON, &CCcdDataImageProcessingDlg::OnBnClickedImageInfoSaveButton)
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						ON_BN_CLICKED(IDC_DLG_MIN_BUTTON, &CCcdDataImageProcessingDlg::OnBnClickedDlgMinButton)
 | 
					 | 
					 | 
					 | 
						ON_BN_CLICKED(IDC_DLG_MIN_BUTTON, &CCcdDataImageProcessingDlg::OnBnClickedDlgMinButton)
 | 
				
			
			
		
	
	
		
		
			
				
					| 
						
						
						
							
								
							
						
					 | 
					 | 
					@ -184,6 +173,7 @@ BEGIN_MESSAGE_MAP(CCcdDataImageProcessingDlg, CDialogEx)
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						ON_BN_CLICKED(IDC_SLECT_PATH_BUTTON, &CCcdDataImageProcessingDlg::OnBnClickedSlectPathButton)
 | 
					 | 
					 | 
					 | 
						ON_BN_CLICKED(IDC_SLECT_PATH_BUTTON, &CCcdDataImageProcessingDlg::OnBnClickedSlectPathButton)
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						ON_WM_PAINT()
 | 
					 | 
					 | 
					 | 
						ON_WM_PAINT()
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						ON_BN_CLICKED(IDC_SAVE_IMAGE_BUTTON, &CCcdDataImageProcessingDlg::OnBnClickedSaveImageButton)
 | 
					 | 
					 | 
					 | 
						ON_BN_CLICKED(IDC_SAVE_IMAGE_BUTTON, &CCcdDataImageProcessingDlg::OnBnClickedSaveImageButton)
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
						ON_WM_TIMER()
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					END_MESSAGE_MAP()
 | 
					 | 
					 | 
					 | 
					END_MESSAGE_MAP()
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
	
		
		
			
				
					| 
						
							
								
							
						
						
							
								
							
						
						
					 | 
					 | 
					@ -223,7 +213,7 @@ BOOL CCcdDataImageProcessingDlg::OnInitDialog()
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						OnInitEnergyInfo();
 | 
					 | 
					 | 
					 | 
						OnInitEnergyInfo();
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						OnInitCcdDataPath();
 | 
					 | 
					 | 
					 | 
						OnInitCcdDataPath();
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						OnInitAll();
 | 
					 | 
					 | 
					 | 
						OnInitAll();
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						
 | 
					 | 
					 | 
					 | 
						SetTimer(0, 500, NULL);
 | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						return TRUE;  // 除非将焦点设置到控件,否则返回 TRUE
 | 
					 | 
					 | 
					 | 
						return TRUE;  // 除非将焦点设置到控件,否则返回 TRUE
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					}
 | 
					 | 
					 | 
					 | 
					}
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
	
		
		
			
				
					| 
						
							
								
							
						
						
							
								
							
						
						
					 | 
					 | 
					@ -313,7 +303,7 @@ void CCcdDataImageProcessingDlg::OnBnClickedImageInfoSaveButton()
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						}
 | 
					 | 
					 | 
					 | 
						}
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						// 提示保存成功
 | 
					 | 
					 | 
					 | 
						// 提示保存成功
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						AfxMessageBox(_T("CCD图像颜色方案配比信息已保存!"));
 | 
					 | 
					 | 
					 | 
						//AfxMessageBox(_T("CCD图像颜色方案配比信息已保存!"),MB_TOPMOST);
 | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					}
 | 
					 | 
					 | 
					 | 
					}
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
	
		
		
			
				
					| 
						
							
								
							
						
						
							
								
							
						
						
					 | 
					 | 
					@ -570,17 +560,9 @@ void CCcdDataImageProcessingDlg::OnBnClickedSlectPathButton()
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					void CCcdDataImageProcessingDlg::OnBnClickedImageGenerateButton()
 | 
					 | 
					 | 
					 | 
					void CCcdDataImageProcessingDlg::OnBnClickedImageGenerateButton()
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					{
 | 
					 | 
					 | 
					 | 
					{
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						// TODO: 执行
 | 
					 | 
					 | 
					 | 
						CWaitCursor wait;
 | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						// 清除上一次的绘制内容
 | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						m_data.clear();  // 清空之前的数据
 | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						CString cddDataPathInfo;
 | 
					 | 
					 | 
					 | 
						CString cddDataPathInfo;
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						GetDlgItemText(IDC_CCD_DATA_PATH_EDIT, cddDataPathInfo);
 | 
					 | 
					 | 
					 | 
						GetDlgItemText(IDC_CCD_DATA_PATH_EDIT, cddDataPathInfo);
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						CStringA cstrA(cddDataPathInfo);  // 将 CString 转换为 CStringA
 | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						std::string stdStr = cstrA.GetString();  // 将 CStringA 转换为 std::string
 | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						CFileMgr fileMgr;
 | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						fileMgr.ReadFileToStrVec(stdStr, m_data); // 假设文件名是 energy_data.csv
 | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						m_colorSchemeManager.addScheme("Scheme1"); // 添加多个颜色方案
 | 
					 | 
					 | 
					 | 
						m_colorSchemeManager.addScheme("Scheme1"); // 添加多个颜色方案
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						//---获取所有方案参数--------------------------------------------
 | 
					 | 
					 | 
					 | 
						//---获取所有方案参数--------------------------------------------
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
	
		
		
			
				
					| 
						
							
								
							
						
						
							
								
							
						
						
					 | 
					 | 
					@ -620,42 +602,42 @@ void CCcdDataImageProcessingDlg::OnBnClickedImageGenerateButton()
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							float maxEnergyValue = _tstof(maxEnergy);  // 转换为 float
 | 
					 | 
					 | 
					 | 
							float maxEnergyValue = _tstof(maxEnergy);  // 转换为 float
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
																	   // 设置颜色
 | 
					 | 
					 | 
					 | 
																	   // 设置颜色
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							COLORREF color = WHITE;  // 默认颜色为白色
 | 
					 | 
					 | 
					 | 
							COLORREF color = RGB_WHITE;  // 默认颜色为白色
 | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							if (colorCombo == colorNames[0]) {  // Red
 | 
					 | 
					 | 
					 | 
							if (colorCombo == colorNames[0]) {  // Red
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
								color = RED;
 | 
					 | 
					 | 
					 | 
								color = RGB_RED;
 | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							}
 | 
					 | 
					 | 
					 | 
							}
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							else if (colorCombo == colorNames[1]) {  // Orange
 | 
					 | 
					 | 
					 | 
							else if (colorCombo == colorNames[1]) {  // Orange
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
								color = ORANGE;
 | 
					 | 
					 | 
					 | 
								color = RGB_ORANGE;
 | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							}
 | 
					 | 
					 | 
					 | 
							}
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							else if (colorCombo == colorNames[2]) {  // Yellow
 | 
					 | 
					 | 
					 | 
							else if (colorCombo == colorNames[2]) {  // Yellow
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
								color = YELLOW;
 | 
					 | 
					 | 
					 | 
								color = RGB_YELLOW;
 | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							}
 | 
					 | 
					 | 
					 | 
							}
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							else if (colorCombo == colorNames[3]) {  // Green
 | 
					 | 
					 | 
					 | 
							else if (colorCombo == colorNames[3]) {  // Green
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
								color = GREEN;
 | 
					 | 
					 | 
					 | 
								color = RGB_GREEN;
 | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							}
 | 
					 | 
					 | 
					 | 
							}
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							else if (colorCombo == colorNames[4]) {  // Cyan
 | 
					 | 
					 | 
					 | 
							else if (colorCombo == colorNames[4]) {  // Cyan
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
								color = CYAN;
 | 
					 | 
					 | 
					 | 
								color = RGB_CYAN;
 | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							}
 | 
					 | 
					 | 
					 | 
							}
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							else if (colorCombo == colorNames[5]) {  // Blue
 | 
					 | 
					 | 
					 | 
							else if (colorCombo == colorNames[5]) {  // Blue
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
								color = BLUE;
 | 
					 | 
					 | 
					 | 
								color = RGB_BLUE;
 | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							}
 | 
					 | 
					 | 
					 | 
							}
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							else if (colorCombo == colorNames[6]) {  // Purple
 | 
					 | 
					 | 
					 | 
							else if (colorCombo == colorNames[6]) {  // Purple
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
								color = PURPLE;
 | 
					 | 
					 | 
					 | 
								color = RGB_PURPLE;
 | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							}
 | 
					 | 
					 | 
					 | 
							}
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							else if (colorCombo == colorNames[7]) {  // Grey
 | 
					 | 
					 | 
					 | 
							else if (colorCombo == colorNames[7]) {  // Grey
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
								color = GREY;
 | 
					 | 
					 | 
					 | 
								color = RGB_GREY;
 | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							}
 | 
					 | 
					 | 
					 | 
							}
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							else if (colorCombo == colorNames[8]) {  // Pink
 | 
					 | 
					 | 
					 | 
							else if (colorCombo == colorNames[8]) {  // Pink
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
								color = PINK;
 | 
					 | 
					 | 
					 | 
								color = RGB_PINK;
 | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							}
 | 
					 | 
					 | 
					 | 
							}
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							else if (colorCombo == colorNames[9]) {  // Black
 | 
					 | 
					 | 
					 | 
							else if (colorCombo == colorNames[9]) {  // Black
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
								color = BLACK;
 | 
					 | 
					 | 
					 | 
								color = RGB_BLACK;
 | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							}
 | 
					 | 
					 | 
					 | 
							}
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							else if (colorCombo == colorNames[10]) {  // White
 | 
					 | 
					 | 
					 | 
							else if (colorCombo == colorNames[10]) {  // White
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
								color = WHITE;
 | 
					 | 
					 | 
					 | 
								color = RGB_WHITE;
 | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							}
 | 
					 | 
					 | 
					 | 
							}
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							else if (colorCombo == colorNames[11]) {  // Brown
 | 
					 | 
					 | 
					 | 
							else if (colorCombo == colorNames[11]) {  // Brown
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
								color = BROWN;
 | 
					 | 
					 | 
					 | 
								color = RGB_BROWN;
 | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							}
 | 
					 | 
					 | 
					 | 
							}
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							// 根据选择的能量区间添加范围
 | 
					 | 
					 | 
					 | 
							// 根据选择的能量区间添加范围
 | 
				
			
			
		
	
	
		
		
			
				
					| 
						
						
						
							
								
							
						
					 | 
					 | 
					@ -667,143 +649,154 @@ void CCcdDataImageProcessingDlg::OnBnClickedImageGenerateButton()
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						//---画图--------------------------------------------------------																		
 | 
					 | 
					 | 
					 | 
						//---画图--------------------------------------------------------																		
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						m_colorSchemeManager.setCurrentScheme("Scheme1"); // 设置当前颜色方案为 Scheme1
 | 
					 | 
					 | 
					 | 
						m_colorSchemeManager.setCurrentScheme("Scheme1"); // 设置当前颜色方案为 Scheme1
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
						gCsvToImg->m_colorSchemeManager = m_colorSchemeManager;
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
						gCsvToImg->ReadCsv2Img(cddDataPathInfo);
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
						auto Db2CString=[](float val)
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
						{
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
							CString str;
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
							str.Format("%.3f", val);
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
							return str;
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
						};
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
						auto ¤tScheme = gCsvToImg->m_colorSchemeManager.currentScheme;
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
																		  // 重绘对话框并强制刷新
 | 
					 | 
					 | 
					 | 
						//CEdit 控件中的占比值 (没全部启用时会抛异常)
 | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						Invalidate(); // 标记窗口为无效区域
 | 
					 | 
					 | 
					 | 
						try
 | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						UpdateWindow(); // 立即刷新窗口
 | 
					 | 
					 | 
					 | 
						{
 | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						printf("11");
 | 
					 | 
					 | 
					 | 
							m_ProportionEnergy1.SetWindowText(Db2CString(currentScheme->ranges.at(0).dPercent));
 | 
				
			
			
				
				
			
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
							m_ProportionEnergy2.SetWindowText(Db2CString(currentScheme->ranges.at(1).dPercent));
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
							m_ProportionEnergy3.SetWindowText(Db2CString(currentScheme->ranges.at(2).dPercent));
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
							m_ProportionEnergy4.SetWindowText(Db2CString(currentScheme->ranges.at(3).dPercent));
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
							m_ProportionEnergy5.SetWindowText(Db2CString(currentScheme->ranges.at(4).dPercent));
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
							m_ProportionEnergy6.SetWindowText(Db2CString(currentScheme->ranges.at(5).dPercent));
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
							m_ProportionEnergy7.SetWindowText(Db2CString(currentScheme->ranges.at(6).dPercent));
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
							m_ProportionEnergy8.SetWindowText(Db2CString(currentScheme->ranges.at(7).dPercent));
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
							m_ProportionEnergy9.SetWindowText(Db2CString(currentScheme->ranges.at(8).dPercent));
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
							m_ProportionEnergy10.SetWindowText(Db2CString(currentScheme->ranges.at(9).dPercent));
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
						}
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
						catch (...){}
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
						
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
						UpdateWindow();
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					}
 | 
					 | 
					 | 
					 | 
					}
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					// 根据能量值设置颜色
 | 
					 | 
					 | 
					 | 
					// 根据能量值设置颜色
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					COLORREF CCcdDataImageProcessingDlg::GetColorFromEnergy(float energy)
 | 
					 | 
					 | 
					 | 
					COLORREF CCcdDataImageProcessingDlg::GetColorFromEnergy(float energy)
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					{
 | 
					 | 
					 | 
					 | 
					{
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						if (m_colorSchemeManager.currentScheme == nullptr) {
 | 
					 | 
					 | 
					 | 
						if (m_colorSchemeManager.currentScheme == nullptr) {
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							return WHITE;
 | 
					 | 
					 | 
					 | 
							return RGB_WHITE;
 | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						}
 | 
					 | 
					 | 
					 | 
						}
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						return m_colorSchemeManager.currentScheme->getColor(energy);
 | 
					 | 
					 | 
					 | 
						return m_colorSchemeManager.currentScheme->getColor(energy);
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					}
 | 
					 | 
					 | 
					 | 
					}
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					void CCcdDataImageProcessingDlg::OnPaint()
 | 
					 | 
					 | 
					 | 
					//void CCcdDataImageProcessingDlg::OnPaint()
 | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					{
 | 
					 | 
					 | 
					 | 
					//{
 | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						CPaintDC dc(this); // 设备上下文
 | 
					 | 
					 | 
					 | 
					//
 | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						CRect clientRect;
 | 
					 | 
					 | 
					 | 
					//
 | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						GetClientRect(&clientRect); // 获取客户区域矩形
 | 
					 | 
					 | 
					 | 
					//	gCsvToImg->ShowLastImg(&m_PicCtrl);
 | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					//	return;
 | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
													// 设置背景色
 | 
					 | 
					 | 
					 | 
					//
 | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						dc.FillSolidRect(clientRect, RGB(255, 255, 255));
 | 
					 | 
					 | 
					 | 
					//	CPaintDC dc(this); // 设备上下文
 | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					//	CRect clientRect;
 | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						// 设置字体
 | 
					 | 
					 | 
					 | 
					//	GetClientRect(&clientRect); // 获取客户区域矩形
 | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						CFont font;
 | 
					 | 
					 | 
					 | 
					//
 | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						font.CreatePointFont(120, _T("Arial"));
 | 
					 | 
					 | 
					 | 
					//	// 设置背景色
 | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						dc.SelectObject(&font);
 | 
					 | 
					 | 
					 | 
					//	dc.FillSolidRect(clientRect, RGB(255, 255, 255));
 | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					//
 | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						// 计算矩阵的行数和列数
 | 
					 | 
					 | 
					 | 
					//	// 设置字体
 | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						int numRows = m_data.size();
 | 
					 | 
					 | 
					 | 
					//	CFont font;
 | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						int numCols = (numRows > 0) ? m_data[0].size() : 0;
 | 
					 | 
					 | 
					 | 
					//	font.CreatePointFont(120, _T("Arial"));
 | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					//	dc.SelectObject(&font);
 | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						// 如果数据为空,提前返回
 | 
					 | 
					 | 
					 | 
					//
 | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						if (numRows == 0 || numCols == 0) {
 | 
					 | 
					 | 
					 | 
					//	// 计算矩阵的行数和列数
 | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							dc.TextOut(10, 10, _T("No data available"));
 | 
					 | 
					 | 
					 | 
					//	int numRows = m_data.size();
 | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							return;
 | 
					 | 
					 | 
					 | 
					//	int numCols = (numRows > 0) ? m_data[0].size() : 0;
 | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						}
 | 
					 | 
					 | 
					 | 
					//
 | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					//	// 如果数据为空,提前返回
 | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						// 获取窗口的宽度和高度
 | 
					 | 
					 | 
					 | 
					//	if (numRows == 0 || numCols == 0) {
 | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						int maxImageWidth = clientRect.Width();  // 使用窗口的宽度
 | 
					 | 
					 | 
					 | 
					//		dc.TextOut(10, 10, _T("No data available"));
 | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						int maxImageHeight = clientRect.Height(); // 使用窗口的高度
 | 
					 | 
					 | 
					 | 
					//		return;
 | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					//	}
 | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
																  // 计算每个数据块的大小(正方形)
 | 
					 | 
					 | 
					 | 
					//
 | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						float pointSize;
 | 
					 | 
					 | 
					 | 
					//	// 获取窗口的宽度和高度
 | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						if (numCols > 0) {
 | 
					 | 
					 | 
					 | 
					//	int maxImageWidth = clientRect.Width();  // 使用窗口的宽度
 | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							// 根据列数和窗口宽度动态计算每个数据块的大小
 | 
					 | 
					 | 
					 | 
					//	int maxImageHeight = clientRect.Height(); // 使用窗口的高度
 | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							float maxPointSizeWidth = static_cast<float>(maxImageWidth) / numCols;  // 计算每个数据块在宽度上的最大大小
 | 
					 | 
					 | 
					 | 
					//
 | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							pointSize = static_cast<int>(maxPointSizeWidth);  // 选择宽度限制的大小
 | 
					 | 
					 | 
					 | 
					//											  // 计算每个数据块的大小(正方形)
 | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						}
 | 
					 | 
					 | 
					 | 
					//	float pointSize;
 | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						else {
 | 
					 | 
					 | 
					 | 
					//	if (numCols > 0) {
 | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							pointSize = 10; // 默认大小
 | 
					 | 
					 | 
					 | 
					//		// 根据列数和窗口宽度动态计算每个数据块的大小
 | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						}
 | 
					 | 
					 | 
					 | 
					//		float maxPointSizeWidth = static_cast<float>(maxImageWidth) / numCols;  // 计算每个数据块在宽度上的最大大小
 | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					//		pointSize = static_cast<int>(maxPointSizeWidth);  // 选择宽度限制的大小
 | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						// 计算最大高度可用空间,动态计算每个数据块的高度
 | 
					 | 
					 | 
					 | 
					//	}
 | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						int pointSizeHeight;
 | 
					 | 
					 | 
					 | 
					//	else {
 | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						if (numRows > 0) {
 | 
					 | 
					 | 
					 | 
					//		pointSize = 10; // 默认大小
 | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							// 根据行数和窗口高度动态计算每个数据块的大小
 | 
					 | 
					 | 
					 | 
					//	}
 | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							float maxPointSizeHeight = static_cast<float>(maxImageHeight) / numRows;  // 计算每个数据块在高度上的最大大小
 | 
					 | 
					 | 
					 | 
					//
 | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							pointSizeHeight = static_cast<int>(maxPointSizeHeight);  // 选择高度限制的大小
 | 
					 | 
					 | 
					 | 
					//	// 计算最大高度可用空间,动态计算每个数据块的高度
 | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						}
 | 
					 | 
					 | 
					 | 
					//	int pointSizeHeight;
 | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						else {
 | 
					 | 
					 | 
					 | 
					//	if (numRows > 0) {
 | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							pointSizeHeight = 10; // 默认大小
 | 
					 | 
					 | 
					 | 
					//		// 根据行数和窗口高度动态计算每个数据块的大小
 | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						}
 | 
					 | 
					 | 
					 | 
					//		float maxPointSizeHeight = static_cast<float>(maxImageHeight) / numRows;  // 计算每个数据块在高度上的最大大小
 | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					//		pointSizeHeight = static_cast<int>(maxPointSizeHeight);  // 选择高度限制的大小
 | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						// 取最小值,确保数据点能够适应窗口
 | 
					 | 
					 | 
					 | 
					//	}
 | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						if (pointSize > pointSizeHeight)pointSize = pointSizeHeight;
 | 
					 | 
					 | 
					 | 
					//	else {
 | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					//		pointSizeHeight = 10; // 默认大小
 | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						// 如果计算出的 pointSize 太小,设置一个最小值
 | 
					 | 
					 | 
					 | 
					//	}
 | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						if (pointSize < 0.5) {
 | 
					 | 
					 | 
					 | 
					//
 | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							pointSize = 0.5; // 确保每个数据点至少为 1
 | 
					 | 
					 | 
					 | 
					//	// 取最小值,确保数据点能够适应窗口
 | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						}
 | 
					 | 
					 | 
					 | 
					//	if (pointSize > pointSizeHeight)pointSize = pointSizeHeight;
 | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					//
 | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						// 计算偏移量,使图像右贴右边,上边贴上边
 | 
					 | 
					 | 
					 | 
					//	// 如果计算出的 pointSize 太小,设置一个最小值
 | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						int offsetX = 0;
 | 
					 | 
					 | 
					 | 
					//	if (pointSize < 0.5) {
 | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						int offsetY = 0;
 | 
					 | 
					 | 
					 | 
					//		pointSize = 0.5; // 确保每个数据点至少为 1
 | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					//	}
 | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						// 遍历并绘制每个数据点
 | 
					 | 
					 | 
					 | 
					//
 | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						for (int row = 0; row < numRows; ++row) {
 | 
					 | 
					 | 
					 | 
					//	// 计算偏移量,使图像右贴右边,上边贴上边
 | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							for (int col = 0; col < numCols; ++col) {
 | 
					 | 
					 | 
					 | 
					//	int offsetX = 0;
 | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
								// 确保每个元素都有效
 | 
					 | 
					 | 
					 | 
					//	int offsetY = 0;
 | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
								if (row < m_data.size() && col < m_data[row].size()) {
 | 
					 | 
					 | 
					 | 
					//
 | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
									try {
 | 
					 | 
					 | 
					 | 
					//	// 遍历并绘制每个数据点
 | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
										float energy = std::stof(m_data[row][col]);  // 将字符串转换为浮动数
 | 
					 | 
					 | 
					 | 
					//	for (int row = 0; row < numRows; ++row) {
 | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					//		for (int col = 0; col < numCols; ++col) {
 | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
																					 // 数据统计
 | 
					 | 
					 | 
					 | 
					//			// 确保每个元素都有效
 | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
										if (energy < m_minEnergy) m_minEnergy = energy;  // 更新最小值
 | 
					 | 
					 | 
					 | 
					//			if (row < m_data.size() && col < m_data[row].size()) {
 | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
										if (energy > m_maxEnergy) m_maxEnergy = energy;  // 更新最大值
 | 
					 | 
					 | 
					 | 
					//				try {
 | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					//					float energy = std::stof(m_data[row][col]);  // 将字符串转换为浮动数
 | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
										m_NumEnergy++;
 | 
					 | 
					 | 
					 | 
					//
 | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					//																 // 数据统计
 | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
										// 获取能量值对应的颜色
 | 
					 | 
					 | 
					 | 
					//					if (energy < m_minEnergy) m_minEnergy = energy;  // 更新最小值
 | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
										COLORREF color = GetColorFromEnergy(energy);
 | 
					 | 
					 | 
					 | 
					//					if (energy > m_maxEnergy) m_maxEnergy = energy;  // 更新最大值
 | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
										dc.SetDCBrushColor(color); // 设置画刷颜色
 | 
					 | 
					 | 
					 | 
					//
 | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					//					m_NumEnergy++;
 | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
																   // 计算当前数据点位置(添加偏移量)
 | 
					 | 
					 | 
					 | 
					//
 | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
										float scaledX = col * pointSize + offsetX;
 | 
					 | 
					 | 
					 | 
					//					// 获取能量值对应的颜色
 | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
										float scaledY = row * pointSize + offsetY;
 | 
					 | 
					 | 
					 | 
					//					COLORREF color = GetColorFromEnergy(energy);
 | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					//					dc.SetDCBrushColor(color); // 设置画刷颜色
 | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
										// 绘制正方形数据块
 | 
					 | 
					 | 
					 | 
					//
 | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
										CRect rect(scaledX, scaledY, scaledX + pointSize, scaledY + pointSize);
 | 
					 | 
					 | 
					 | 
					//											   // 计算当前数据点位置(添加偏移量)
 | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
										dc.FillSolidRect(rect, color);
 | 
					 | 
					 | 
					 | 
					//					float scaledX = col * pointSize + offsetX;
 | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
									}
 | 
					 | 
					 | 
					 | 
					//					float scaledY = row * pointSize + offsetY;
 | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
									catch (const std::invalid_argument& e) {
 | 
					 | 
					 | 
					 | 
					//
 | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
										// 处理无效的字符串,设置默认值或跳过
 | 
					 | 
					 | 
					 | 
					//					// 绘制正方形数据块
 | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
										continue;  // 如果数据无法转换为 float,跳过当前元素
 | 
					 | 
					 | 
					 | 
					//					CRect rect(scaledX, scaledY, scaledX + pointSize, scaledY + pointSize);
 | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
									}
 | 
					 | 
					 | 
					 | 
					//					dc.FillSolidRect(rect, color);
 | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
								}
 | 
					 | 
					 | 
					 | 
					//				}
 | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							}
 | 
					 | 
					 | 
					 | 
					//				catch (const std::invalid_argument& e) {
 | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						}
 | 
					 | 
					 | 
					 | 
					//					// 处理无效的字符串,设置默认值或跳过
 | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					//					continue;  // 如果数据无法转换为 float,跳过当前元素
 | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						// 显示最大最小能量值
 | 
					 | 
					 | 
					 | 
					//				}
 | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						CString str;
 | 
					 | 
					 | 
					 | 
					//			}
 | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						str.Format(_T("Min Energy: %.2f, Max Energy: %.2f"), m_minEnergy, m_maxEnergy);
 | 
					 | 
					 | 
					 | 
					//		}
 | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						dc.TextOut(0, 1300, str);
 | 
					 | 
					 | 
					 | 
					//	}
 | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						UpProportionEnergy();
 | 
					 | 
					 | 
					 | 
					//
 | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					}
 | 
					 | 
					 | 
					 | 
					//	// 显示最大最小能量值
 | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					//	CString str;
 | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					COLORREF ColorScheme::getColor(float energy)
 | 
					 | 
					 | 
					 | 
					//	str.Format(_T("Min Energy: %.2f, Max Energy: %.2f"), m_minEnergy, m_maxEnergy);
 | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					{
 | 
					 | 
					 | 
					 | 
					//	dc.TextOut(0, 1300, str);
 | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						
 | 
					 | 
					 | 
					 | 
					//	UpProportionEnergy();
 | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						for (const auto& range : ranges) {
 | 
					 | 
					 | 
					 | 
					//}
 | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							if (energy >= range.minEnergy && energy <= range.maxEnergy) {
 | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
								//HWND hwd = (HWND)range.proportionEnergy;
 | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
								//CString str;
 | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
								//GetDlgItemText(range.proportionEnergy, str); // 获取控件指针
 | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
								m_proportionEnergy[range.proportionEnergy]++;
 | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
								return range.color;
 | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							}
 | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						}
 | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						return WHITE; // 默认返回白色
 | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						
 | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					}
 | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					void CCcdDataImageProcessingDlg::OnBnClickedSaveImageButton()
 | 
					 | 
					 | 
					 | 
					void CCcdDataImageProcessingDlg::OnBnClickedSaveImageButton()
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					{
 | 
					 | 
					 | 
					 | 
					{
 | 
				
			
			
		
	
	
		
		
			
				
					| 
						
						
						
							
								
							
						
					 | 
					 | 
					@ -815,7 +808,8 @@ void CCcdDataImageProcessingDlg::OnBnClickedSaveImageButton()
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							CString savePath = saveFileDlg.GetPathName();
 | 
					 | 
					 | 
					 | 
							CString savePath = saveFileDlg.GetPathName();
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							// 2. 调用图像保存函数
 | 
					 | 
					 | 
					 | 
							// 2. 调用图像保存函数
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
							SaveImage(savePath);
 | 
					 | 
					 | 
					 | 
							gCsvToImg->SaveLastImg(savePath);
 | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
							//SaveImage(savePath);
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						}
 | 
					 | 
					 | 
					 | 
						}
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					}
 | 
					 | 
					 | 
					 | 
					}
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
	
		
		
			
				
					| 
						
							
								
							
						
						
							
								
							
						
						
					 | 
					 | 
					@ -851,3 +845,14 @@ void CCcdDataImageProcessingDlg::SaveImage(const CString& savePath)
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
						}
 | 
					 | 
					 | 
					 | 
						}
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					}
 | 
					 | 
					 | 
					 | 
					}
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					void CCcdDataImageProcessingDlg::OnTimer(UINT_PTR nIDEvent)
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					{
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
						// TODO: 在此添加消息处理程序代码和/或调用默认值
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
						gCsvToImg->ShowLastImg(&m_PicCtrl);
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
						CDialogEx::OnTimer(nIDEvent);
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					}
 | 
				
			
			
		
	
	
		
		
			
				
					| 
						
						
						
					 | 
					 | 
					
 
 |