You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

859 lines
25 KiB
C++

// CcdDataImageProcessingDlg.cpp : ʵ<><CAB5><EFBFBD>ļ<EFBFBD>
//
#include "stdafx.h"
#include "CcdDataImageProcessing.h"
#include "CcdDataImageProcessingDlg.h"
#include "afxdialogex.h"
// <20><><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD>·<EFBFBD><C2B7><EFBFBD><EFBFBD>
#define FILE_CCD_IMAGE_INFO_PATH _T("ccd_image_info.csv")
#define FILE_CCD_DATAT_PATH _T("ccd_data_path.csv")
5 days ago
// <20>ؼ<EFBFBD>IDӳ<44><D3B3>
const int minEnergyCtrlIds[] = { IDC_MIN_ENERGY_EDIT1, IDC_MIN_ENERGY_EDIT2, IDC_MIN_ENERGY_EDIT3,
IDC_MIN_ENERGY_EDIT4, IDC_MIN_ENERGY_EDIT5, IDC_MIN_ENERGY_EDIT6,
IDC_MIN_ENERGY_EDIT7, IDC_MIN_ENERGY_EDIT8, IDC_MIN_ENERGY_EDIT9, IDC_MIN_ENERGY_EDIT10 };
const int maxEnergyCtrlIds[] = { IDC_MAX_ENERGY_EDIT1, IDC_MAX_ENERGY_EDIT2, IDC_MAX_ENERGY_EDIT3,
IDC_MAX_ENERGY_EDIT4, IDC_MAX_ENERGY_EDIT5, IDC_MAX_ENERGY_EDIT6,
IDC_MAX_ENERGY_EDIT7, IDC_MAX_ENERGY_EDIT8, IDC_MAX_ENERGY_EDIT9, IDC_MAX_ENERGY_EDIT10 };
const int proportionEnergyCtrlIds[] = { IDC_PROPORTION_ENERGY_EDIT1, IDC_PROPORTION_ENERGY_EDIT2, IDC_PROPORTION_ENERGY_EDIT3,
IDC_PROPORTION_ENERGY_EDIT4, IDC_PROPORTION_ENERGY_EDIT5, IDC_PROPORTION_ENERGY_EDIT6,
IDC_PROPORTION_ENERGY_EDIT7, IDC_PROPORTION_ENERGY_EDIT8, IDC_PROPORTION_ENERGY_EDIT9, IDC_PROPORTION_ENERGY_EDIT10 };
const int colorComboCtrlIds[] = { IDC_COLOR_COMBO1, IDC_COLOR_COMBO2, IDC_COLOR_COMBO3,
IDC_COLOR_COMBO4, IDC_COLOR_COMBO5, IDC_COLOR_COMBO6,
IDC_COLOR_COMBO7, IDC_COLOR_COMBO8, IDC_COLOR_COMBO9, IDC_COLOR_COMBO10 };
const int energyComboCtrlIds[] = { IDC_ENERGY_COMBO1, IDC_ENERGY_COMBO2, IDC_ENERGY_COMBO3,
IDC_ENERGY_COMBO4, IDC_ENERGY_COMBO5, IDC_ENERGY_COMBO6,
IDC_ENERGY_COMBO7, IDC_ENERGY_COMBO8, IDC_ENERGY_COMBO9, IDC_ENERGY_COMBO10 };
const TCHAR* colorNames[] = {
_T("Red"), _T("Orange"), _T("Yellow"), _T("Green"), _T("Cyan"), _T("Blue"),
_T("Purple"), _T("Grey"), _T("Pink"), _T("Black"), _T("White"), _T("Brown")
};
#ifdef _DEBUG
#define new DEBUG_NEW
#endif
5 days ago
//ColorSchemeManager m_colorSchemeManager;
// <20><><EFBFBD><EFBFBD>Ӧ<EFBFBD>ó<EFBFBD><C3B3>򡰹<EFBFBD><F2A1B0B9>ڡ<EFBFBD><DAA1>˵<EFBFBD><CBB5><EFBFBD><EFBFBD><EFBFBD> CAboutDlg <20>Ի<EFBFBD><D4BB><EFBFBD>
class CAboutDlg : public CDialogEx
{
public:
CAboutDlg();
// <20>Ի<EFBFBD><D4BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
#ifdef AFX_DESIGN_TIME
enum { IDD = IDD_ABOUTBOX };
#endif
protected:
virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV ֧<><D6A7>
// ʵ<><CAB5>
protected:
DECLARE_MESSAGE_MAP()
};
CAboutDlg::CAboutDlg() : CDialogEx(IDD_ABOUTBOX)
{
}
void CAboutDlg::DoDataExchange(CDataExchange* pDX)
{
CDialogEx::DoDataExchange(pDX);
}
BEGIN_MESSAGE_MAP(CAboutDlg, CDialogEx)
END_MESSAGE_MAP()
// CCcdDataImageProcessingDlg <20>Ի<EFBFBD><D4BB><EFBFBD>
CCcdDataImageProcessingDlg::CCcdDataImageProcessingDlg(CWnd* pParent /*=NULL*/)
: CDialogEx(IDD_CCDDATAIMAGEPROCESSING_DIALOG, pParent)
{
m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
m_SumEnergy = 0;
m_NumEnergy = 0;
m_Scheme1 = 0;
m_Scheme2 = 0;
m_Scheme3 = 0;
m_Scheme4 = 0;
m_Scheme5 = 0;
m_Scheme6 = 0;
m_Scheme7 = 0;
m_Scheme8 = 0;
m_Scheme9 = 0;
m_Scheme10 = 0;
}
void CCcdDataImageProcessingDlg::DoDataExchange(CDataExchange* pDX)
{
CDialogEx::DoDataExchange(pDX);
DDX_Control(pDX, IDC_MIN_ENERGY_EDIT1, m_MinEnergy1);
DDX_Control(pDX, IDC_MAX_ENERGY_EDIT1, m_MaxEnergy1);
DDX_Control(pDX, IDC_MIN_ENERGY_EDIT2, m_MinEnergy2);
DDX_Control(pDX, IDC_MAX_ENERGY_EDIT2, m_MaxEnergy2);
DDX_Control(pDX, IDC_MIN_ENERGY_EDIT3, m_MinEnergy3);
DDX_Control(pDX, IDC_MAX_ENERGY_EDIT3, m_MaxEnergy3);
DDX_Control(pDX, IDC_MIN_ENERGY_EDIT4, m_MinEnergy4);
DDX_Control(pDX, IDC_MAX_ENERGY_EDIT4, m_MaxEnergy4);
DDX_Control(pDX, IDC_MIN_ENERGY_EDIT5, m_MinEnergy5);
DDX_Control(pDX, IDC_MAX_ENERGY_EDIT5, m_MaxEnergy5);
DDX_Control(pDX, IDC_MIN_ENERGY_EDIT6, m_MinEnergy6);
DDX_Control(pDX, IDC_MAX_ENERGY_EDIT6, m_MaxEnergy6);
DDX_Control(pDX, IDC_MIN_ENERGY_EDIT7, m_MinEnergy7);
DDX_Control(pDX, IDC_MAX_ENERGY_EDIT7, m_MaxEnergy7);
DDX_Control(pDX, IDC_MIN_ENERGY_EDIT8, m_MinEnergy8);
DDX_Control(pDX, IDC_MAX_ENERGY_EDIT8, m_MaxEnergy8);
DDX_Control(pDX, IDC_MIN_ENERGY_EDIT9, m_MinEnergy9);
DDX_Control(pDX, IDC_MAX_ENERGY_EDIT9, m_MaxEnergy9);
DDX_Control(pDX, IDC_MIN_ENERGY_EDIT10, m_MinEnergy10);
DDX_Control(pDX, IDC_MAX_ENERGY_EDIT10, m_MaxEnergy10);
DDX_Control(pDX, IDC_ENERGY_COMBO1, m_bEnergy1);
DDX_Control(pDX, IDC_ENERGY_COMBO2, m_bEnergy2);
DDX_Control(pDX, IDC_ENERGY_COMBO3, m_bEnergy3);
DDX_Control(pDX, IDC_ENERGY_COMBO4, m_bEnergy4);
DDX_Control(pDX, IDC_ENERGY_COMBO5, m_bEnergy5);
DDX_Control(pDX, IDC_ENERGY_COMBO6, m_bEnergy6);
DDX_Control(pDX, IDC_ENERGY_COMBO7, m_bEnergy7);
DDX_Control(pDX, IDC_ENERGY_COMBO8, m_bEnergy8);
DDX_Control(pDX, IDC_ENERGY_COMBO9, m_bEnergy9);
DDX_Control(pDX, IDC_ENERGY_COMBO10, m_bEnergy10);
DDX_Control(pDX, IDC_PROPORTION_ENERGY_EDIT1, m_ProportionEnergy1);
DDX_Control(pDX, IDC_PROPORTION_ENERGY_EDIT2, m_ProportionEnergy2);
DDX_Control(pDX, IDC_PROPORTION_ENERGY_EDIT3, m_ProportionEnergy3);
DDX_Control(pDX, IDC_PROPORTION_ENERGY_EDIT4, m_ProportionEnergy4);
DDX_Control(pDX, IDC_PROPORTION_ENERGY_EDIT5, m_ProportionEnergy5);
DDX_Control(pDX, IDC_PROPORTION_ENERGY_EDIT6, m_ProportionEnergy6);
DDX_Control(pDX, IDC_PROPORTION_ENERGY_EDIT7, m_ProportionEnergy7);
DDX_Control(pDX, IDC_PROPORTION_ENERGY_EDIT8, m_ProportionEnergy8);
DDX_Control(pDX, IDC_PROPORTION_ENERGY_EDIT9, m_ProportionEnergy9);
DDX_Control(pDX, IDC_PROPORTION_ENERGY_EDIT10, m_ProportionEnergy10);
DDX_Control(pDX, IDC_COLOR_COMBO1, m_Color1);
DDX_Control(pDX, IDC_COLOR_COMBO2, m_Color2);
DDX_Control(pDX, IDC_COLOR_COMBO3, m_Color3);
DDX_Control(pDX, IDC_COLOR_COMBO4, m_Color4);
DDX_Control(pDX, IDC_COLOR_COMBO5, m_Color5);
DDX_Control(pDX, IDC_COLOR_COMBO6, m_Color6);
DDX_Control(pDX, IDC_COLOR_COMBO7, m_Color7);
DDX_Control(pDX, IDC_COLOR_COMBO8, m_Color8);
DDX_Control(pDX, IDC_COLOR_COMBO9, m_Color9);
DDX_Control(pDX, IDC_COLOR_COMBO10, m_Color10);
DDX_Control(pDX, IDC_CCD_DATA_PATH_EDIT, m_CddDataPath);
5 days ago
DDX_Control(pDX, IDC_PIC_CTRL, m_PicCtrl);
}
BEGIN_MESSAGE_MAP(CCcdDataImageProcessingDlg, CDialogEx)
ON_WM_SYSCOMMAND()
5 days ago
// ON_WM_PAINT()
ON_WM_QUERYDRAGICON()
ON_BN_CLICKED(IDC_IMAGE_INFO_SAVE_BUTTON, &CCcdDataImageProcessingDlg::OnBnClickedImageInfoSaveButton)
ON_BN_CLICKED(IDC_DLG_MIN_BUTTON, &CCcdDataImageProcessingDlg::OnBnClickedDlgMinButton)
ON_BN_CLICKED(IDC_DLG_MAX_BUTTON, &CCcdDataImageProcessingDlg::OnBnClickedDlgMaxButton)
ON_BN_CLICKED(IDC_IMAGE_GENERATE_BUTTON, &CCcdDataImageProcessingDlg::OnBnClickedImageGenerateButton)
ON_BN_CLICKED(IDC_SLECT_PATH_BUTTON, &CCcdDataImageProcessingDlg::OnBnClickedSlectPathButton)
ON_WM_PAINT()
ON_BN_CLICKED(IDC_SAVE_IMAGE_BUTTON, &CCcdDataImageProcessingDlg::OnBnClickedSaveImageButton)
5 days ago
ON_WM_TIMER()
END_MESSAGE_MAP()
// CCcdDataImageProcessingDlg <20><>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
BOOL CCcdDataImageProcessingDlg::OnInitDialog()
{
CDialogEx::OnInitDialog();
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>...<2E><><EFBFBD>˵<EFBFBD><CBB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӵ<EFBFBD>ϵͳ<CFB5>˵<EFBFBD><CBB5>С<EFBFBD>
// IDM_ABOUTBOX <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϵͳ<CFB5><CDB3><EFBFBD>Χ<EEB7B6>ڡ<EFBFBD>
ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);
ASSERT(IDM_ABOUTBOX < 0xF000);
CMenu* pSysMenu = GetSystemMenu(FALSE);
if (pSysMenu != NULL)
{
BOOL bNameValid;
CString strAboutMenu;
bNameValid = strAboutMenu.LoadString(IDS_ABOUTBOX);
ASSERT(bNameValid);
if (!strAboutMenu.IsEmpty())
{
pSysMenu->AppendMenu(MF_SEPARATOR);
pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);
}
}
// <20><><EFBFBD>ô˶Ի<CBB6><D4BB><EFBFBD><EFBFBD><EFBFBD>ͼ<EFBFBD><20><>Ӧ<EFBFBD>ó<EFBFBD><C3B3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڲ<EFBFBD><DAB2>ǶԻ<C7B6><D4BB><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD>ܽ<EFBFBD><DCBD>Զ<EFBFBD>
// ִ<>д˲<D0B4><CBB2><EFBFBD>
SetIcon(m_hIcon, TRUE); // <20><><EFBFBD>ô<EFBFBD>ͼ<EFBFBD><CDBC>
SetIcon(m_hIcon, FALSE); // <20><><EFBFBD><EFBFBD>Сͼ<D0A1><CDBC>
// TODO: <20>ڴ<EFBFBD><DAB4><EFBFBD><EFBFBD>Ӷ<EFBFBD><D3B6><EFBFBD><EFBFBD>ij<EFBFBD>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
OnInitEnergyCombo();
OnInitEnergyInfo();
OnInitCcdDataPath();
OnInitAll();
5 days ago
SetTimer(0, 500, NULL);
return TRUE; // <20><><EFBFBD>ǽ<EFBFBD><C7BD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>õ<EFBFBD><C3B5>ؼ<EFBFBD><D8BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>򷵻<EFBFBD> TRUE
}
void CCcdDataImageProcessingDlg::OnSysCommand(UINT nID, LPARAM lParam)
{
if ((nID & 0xFFF0) == IDM_ABOUTBOX)
{
CAboutDlg dlgAbout;
dlgAbout.DoModal();
}
else
{
CDialogEx::OnSysCommand(nID, lParam);
}
}
//<2F><><EFBFBD>û<EFBFBD><C3BB>϶<EFBFBD><CFB6><EFBFBD>С<EFBFBD><D0A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱϵͳ<CFB5><CDB3><EFBFBD>ô˺<C3B4><CBBA><EFBFBD>ȡ<EFBFBD>ù<EFBFBD><C3B9><EFBFBD>
//<2F><>ʾ<EFBFBD><CABE>
HCURSOR CCcdDataImageProcessingDlg::OnQueryDragIcon()
{
return static_cast<HCURSOR>(m_hIcon);
}
void CCcdDataImageProcessingDlg::OnBnClickedImageInfoSaveButton()
{
// <20><><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ
CString strFilePath = FILE_CCD_IMAGE_INFO_PATH;
CString ccdFilePath = FILE_CCD_DATAT_PATH;
// <20><><EFBFBD><EFBFBD> CStdioFile <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȷ<EFBFBD><C8B7><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD> UTF-8 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
CStdioFile file,ccdDataFilePath;
if (!file.Open(strFilePath, CFile::modeCreate | CFile::modeWrite | CFile::typeText)) {
AfxMessageBox(_T("<EFBFBD>޷<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><EFBFBD><EFBFBD>"));
return;
}
if (!ccdDataFilePath.Open(ccdFilePath, CFile::modeCreate | CFile::modeWrite | CFile::typeText)) {
AfxMessageBox(_T("<EFBFBD>޷<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><EFBFBD><EFBFBD>"));
return;
}
// д<><D0B4><EFBFBD><EFBFBD>ͷ<EFBFBD><CDB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD>ö<EFBFBD><C3B6>ŷָ<C5B7>
file.WriteString(_T("Plan,MinEnergy,MaxEnergy,Color,TF,Proportion(%)\n"));
// ӳ<><D3B3><EFBFBD>ؼ<EFBFBD>ID
CString cddDataPathInfo;
GetDlgItemText(IDC_CCD_DATA_PATH_EDIT, cddDataPathInfo);
ccdDataFilePath.WriteString(cddDataPathInfo);
// ѭ<><D1AD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ÿһ<C3BF><D2BB><EFBFBD>ؼ<EFBFBD>
for (int i = 0; i < 10; ++i) {
CString strPlan;
strPlan.Format(_T("%d"), i + 1);
// <20><>ȡ<EFBFBD><EFBFBD><E0BCAD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
CString minEnergy, maxEnergy, proportionEnergy, energyCombo, colorCombo;
GetDlgItemText(minEnergyCtrlIds[i], minEnergy);
GetDlgItemText(maxEnergyCtrlIds[i], maxEnergy);
GetDlgItemText(proportionEnergyCtrlIds[i], proportionEnergy);
// <20><>ȡ<EFBFBD><C8A1>ɫ<EFBFBD><C9AB><EFBFBD>Ͽ<EFBFBD><CFBF><EFBFBD><EFBFBD><EFBFBD>
CComboBox* pColorComboBox = (CComboBox*)GetDlgItem(colorComboCtrlIds[i]);
int colorSel = pColorComboBox->GetCurSel(); // <20><>ȡ<EFBFBD><C8A1>ǰѡ<C7B0><D1A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
if (colorSel != CB_ERR) {
pColorComboBox->GetLBText(colorSel, colorCombo); // <20><>ȡ<EFBFBD><C8A1>ɫ<EFBFBD><C9AB><EFBFBD><EFBFBD>
}
else {
colorCombo = _T(""); // <20><><EFBFBD><EFBFBD>û<EFBFBD><C3BB>ѡ<EFBFBD><D1A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA>
}
// <20><>ȡTF<54><46><EFBFBD>Ͽ<EFBFBD><CFBF><EFBFBD><EFBFBD><EFBFBD>
CComboBox* pComboBox = (CComboBox*)GetDlgItem(energyComboCtrlIds[i]);
int energySel = pComboBox->GetCurSel(); // <20><>ȡ<EFBFBD><C8A1>ǰѡ<C7B0><D1A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
if (energySel != CB_ERR) {
pComboBox->GetLBText(energySel, energyCombo); // <20><>ȡTrue/False
}
else {
energyCombo = _T(""); // <20><><EFBFBD><EFBFBD>û<EFBFBD><C3BB>ѡ<EFBFBD><D1A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA>
}
// <20><><EFBFBD><EFBFBD>Ҫ<EFBFBD><D2AA>д<EFBFBD><D0B4><EFBFBD><EFBFBD><EFBFBD>ݣ<EFBFBD><DDA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɫ<EFBFBD>У<EFBFBD><D0A3><EFBFBD>ʹ<EFBFBD>ö<EFBFBD><C3B6>ŷָ<C5B7>
file.WriteString(strPlan + _T(",") + minEnergy + _T(",") + maxEnergy +
_T(",") + colorCombo + _T(",") + energyCombo +
_T(",") + proportionEnergy + _T("\n"));
}
// <20><>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD>ɹ<EFBFBD>
5 days ago
//AfxMessageBox(_T("CCDͼ<44><CDBC><EFBFBD><EFBFBD>ɫ<EFBFBD><C9AB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD>ѱ<EFBFBD><D1B1>棡"),MB_TOPMOST);
}
void CCcdDataImageProcessingDlg::OnBnClickedDlgMinButton()
{
// <20><>С<EFBFBD><D0A1><EFBFBD><EFBFBD><EFBFBD>ڲ<EFBFBD><DAB2><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
ShowWindow(SW_MINIMIZE);
}
void CCcdDataImageProcessingDlg::OnBnClickedDlgMaxButton()
{
}
void CCcdDataImageProcessingDlg::OnInitEnergyCombo()
{
// <20><>ʼ<EFBFBD><CABC>ComboBox<6F>ؼ<EFBFBD><D8BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>True<75><65>Falseѡ<65><D1A1>
CComboBox* energyCombos[] = {
&m_bEnergy1, &m_bEnergy2, &m_bEnergy3, &m_bEnergy4, &m_bEnergy5,
&m_bEnergy6, &m_bEnergy7, &m_bEnergy8, &m_bEnergy9, &m_bEnergy10
};
// ѭ<><D1AD><EFBFBD><EFBFBD>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Energy ComboBox<6F>ؼ<EFBFBD>
for (int i = 0; i < 10; ++i)
{
TRACE(_T("Initializing ComboBox %d\n"), i); // <20><>ӡ<EFBFBD><D3A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ
energyCombos[i]->AddString(_T("True"));
energyCombos[i]->AddString(_T("False"));
energyCombos[i]->SetCurSel(0); // Ĭ<><C4AC>ѡ<EFBFBD><D1A1>False
energyCombos[i]->ModifyStyle(CBS_SIMPLE, CBS_DROPDOWNLIST); // <20><><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD><EFBFBD>б<EFBFBD><D0B1><EFBFBD>ģʽ<C4A3><CABD><EFBFBD><EFBFBD><EFBFBD>ܱ༭
}
// <20><>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD>ɫ ComboBox<6F>ؼ<EFBFBD>
CComboBox* colorCombos[] = {
&m_Color1, &m_Color2, &m_Color3, &m_Color4, &m_Color5,
&m_Color6, &m_Color7, &m_Color8, &m_Color9, &m_Color10
};
// ѭ<><D1AD><EFBFBD><EFBFBD>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɫ ComboBox<6F>ؼ<EFBFBD>
for (int i = 0; i < 10; ++i)
{
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɫ<EFBFBD><C9AB><EFBFBD>Ƶ<EFBFBD>ÿ<EFBFBD><C3BF><EFBFBD><EFBFBD>ɫ<EFBFBD>ؼ<EFBFBD>
for (int j = 0; j < sizeof(colorNames) / sizeof(colorNames[0]); ++j)
{
colorCombos[i]->AddString(colorNames[j]);
}
colorCombos[i]->SetCurSel(0); // Ĭ<><C4AC>ѡ<EFBFBD><D1A1><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD>ɫ
colorCombos[i]->ModifyStyle(0, CBS_DROPDOWNLIST); // <20><><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD><EFBFBD>б<EFBFBD><D0B1><EFBFBD>ģʽ<C4A3><CABD><EFBFBD><EFBFBD><EFBFBD>ܱ༭
}
}
void CCcdDataImageProcessingDlg::OnInitEnergyInfo()
{
// <20><>ʼ<EFBFBD><CABC> CEdit <20>ؼ<EFBFBD><D8BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ 0
m_MinEnergy1.SetWindowText(_T("0"));
m_MaxEnergy1.SetWindowText(_T("0"));
m_MinEnergy2.SetWindowText(_T("0"));
m_MaxEnergy2.SetWindowText(_T("0"));
m_MinEnergy3.SetWindowText(_T("0"));
m_MaxEnergy3.SetWindowText(_T("0"));
m_MinEnergy4.SetWindowText(_T("0"));
m_MaxEnergy4.SetWindowText(_T("0"));
m_MinEnergy5.SetWindowText(_T("0"));
m_MaxEnergy5.SetWindowText(_T("0"));
m_MinEnergy6.SetWindowText(_T("0"));
m_MaxEnergy6.SetWindowText(_T("0"));
m_MinEnergy7.SetWindowText(_T("0"));
m_MaxEnergy7.SetWindowText(_T("0"));
m_MinEnergy8.SetWindowText(_T("0"));
m_MaxEnergy8.SetWindowText(_T("0"));
m_MinEnergy9.SetWindowText(_T("0"));
m_MaxEnergy9.SetWindowText(_T("0"));
m_MinEnergy10.SetWindowText(_T("0"));
m_MaxEnergy10.SetWindowText(_T("0"));
// <20><>ʼ<EFBFBD><CABC> CEdit <20>ؼ<EFBFBD><D8BC>е<EFBFBD><D0B5><EFBFBD><EFBFBD><EFBFBD>ֵΪ 0
m_ProportionEnergy1.SetWindowText(_T("0"));
m_ProportionEnergy2.SetWindowText(_T("0"));
m_ProportionEnergy3.SetWindowText(_T("0"));
m_ProportionEnergy4.SetWindowText(_T("0"));
m_ProportionEnergy5.SetWindowText(_T("0"));
m_ProportionEnergy6.SetWindowText(_T("0"));
m_ProportionEnergy7.SetWindowText(_T("0"));
m_ProportionEnergy8.SetWindowText(_T("0"));
m_ProportionEnergy9.SetWindowText(_T("0"));
m_ProportionEnergy10.SetWindowText(_T("0"));
}
void CCcdDataImageProcessingDlg::OnInitCcdDataPath()
{
// <20><><EFBFBD><EFBFBD>FILE_CCD_DATAT_PATH<54>Ǻ궨<C7BA><EFBFBD><E5A3AC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>滻Ϊ<E6BBBB><CEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>·<EFBFBD><C2B7>
CString strFilePath = FILE_CCD_DATAT_PATH;
CStdioFile file;
CString filePath;
// <20><><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD>ж<EFBFBD>ȡ
if (!file.Open(strFilePath, CFile::modeRead | CFile::typeText))
{
AfxMessageBox(_T("<EFBFBD>޷<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><EFBFBD><EFBFBD>"));
return;
}
// <20><>ȡ<EFBFBD><C8A1>һ<EFBFBD>е<EFBFBD><D0B5><EFBFBD><EFBFBD><EFBFBD>
if (file.ReadString(filePath))
{
// <20><><EFBFBD><EFBFBD>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>õ<EFBFBD><C3B5>ؼ<EFBFBD><D8BC><EFBFBD>
m_CddDataPath.SetWindowText(filePath);
}
else
{
AfxMessageBox(_T("<EFBFBD>ļ<EFBFBD>Ϊ<EFBFBD>ջ<EFBFBD><EFBFBD>޷<EFBFBD><EFBFBD><EFBFBD>ȡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>"));
}
// <20>ر<EFBFBD><D8B1>ļ<EFBFBD>
file.Close();
}
void CCcdDataImageProcessingDlg::UpProportionEnergy()
{
// <20><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD>
int totalEnergy = m_NumEnergy; // <20><><EFBFBD><EFBFBD> m_NumEnergy <20><EFBFBD><E6B4A2><EFBFBD><EFBFBD>
// <20><><EFBFBD><EFBFBD> m_proportionEnergy <20>е<EFBFBD>ÿ<EFBFBD><C3BF><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5>
for (const auto& pair : m_proportionEnergy) {
int key = pair.first; // <20><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD>ؼ<EFBFBD>ID<49><44>
int value = pair.second; // <20><>ȡֵ<C8A1><D6B5>ÿ<EFBFBD><C3BF><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
double proportion = (static_cast<double>(value) * 100) / totalEnergy;
// <20><>ʽ<EFBFBD><CABD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD>ַ<EFBFBD><D6B7><EFBFBD>
CString strProportion;
strProportion.Format(_T("%.2f%%"), proportion);
// <20><>ȡ<EFBFBD>ؼ<EFBFBD> ID <20><>Ӧ<EFBFBD>Ŀؼ<C4BF>ָ<EFBFBD><D6B8>
SetDlgItemText(key, strProportion); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>õ<EFBFBD><C3B5>ؼ<EFBFBD><D8BC><EFBFBD>
}
}
void CCcdDataImageProcessingDlg::OnInitAll()
{
// <20><><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD>·<EFBFBD><C2B7>
CString strFilePath = FILE_CCD_IMAGE_INFO_PATH;
// <20><><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD>
if (FileExists(strFilePath))
{
// <20>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD>ڣ<EFBFBD><DAA3><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC>м<EFBFBD><D0BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
LoadEnergyDataFromFile(strFilePath);
}
}
// <20><><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD>ڵĸ<DAB5><C4B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
BOOL CCcdDataImageProcessingDlg::FileExists(const CString& strFilePath)
{
DWORD dwFileAttrib = GetFileAttributes(strFilePath);
return (dwFileAttrib != INVALID_FILE_ATTRIBUTES && !(dwFileAttrib & FILE_ATTRIBUTE_DIRECTORY));
}
void CCcdDataImageProcessingDlg::LoadEnergyDataFromFile(const CString& strFilePath)
{
CStdioFile file;
CString line;
CString minEnergy, maxEnergy, proportionEnergy, colorCombo, energyCombo;
// <20><><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD>ж<EFBFBD>ȡ
if (!file.Open(strFilePath, CFile::modeRead | CFile::typeText))
{
AfxMessageBox(_T("<EFBFBD>޷<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><EFBFBD><EFBFBD>"));
return;
}
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͷ
file.ReadString(line);
// ѭ<><D1AD><EFBFBD><EFBFBD>ȡÿһ<C3BF>в<EFBFBD><D0B2><EFBFBD><EFBFBD>¿ؼ<C2BF>
for (int i = 0; i < 10; ++i)
{
// <20><>ȡÿһ<C3BF><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
if (file.ReadString(line))
{
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݣ<EFBFBD><DDA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Զ<EFBFBD><D4B6>ŷָ<C5B7>
CStringArray fields;
int start = 0;
int end = line.Find(_T(','));
// <20><><EFBFBD><EFBFBD>ÿһ<C3BF>е<EFBFBD><D0B5><EFBFBD><EFBFBD><EFBFBD>
while (end != -1)
{
fields.Add(line.Mid(start, end - start));
start = end + 1;
end = line.Find(_T(','), start);
}
fields.Add(line.Mid(start));
// <20><><EFBFBD>ÿؼ<C3BF><D8BC><EFBFBD>ֵ
if (fields.GetSize() >= 6)
{
// <20><><EFBFBD><EFBFBD>MinEnergy<67><79>MaxEnergy
SetDlgItemText(minEnergyCtrlIds[i], fields[1]);
SetDlgItemText(maxEnergyCtrlIds[i], fields[2]);
// <20><><EFBFBD><EFBFBD>Proportion
SetDlgItemText(proportionEnergyCtrlIds[i], fields[5]);
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɫ
CComboBox* pColorCombo = (CComboBox*)GetDlgItem(colorComboCtrlIds[i]);
int colorIndex = pColorCombo->FindStringExact(-1, fields[3]);
if (colorIndex != CB_ERR)
{
pColorCombo->SetCurSel(colorIndex);
}
// <20><><EFBFBD><EFBFBD>TF
CComboBox* pEnergyCombo = (CComboBox*)GetDlgItem(energyComboCtrlIds[i]);
int tfIndex = pEnergyCombo->FindStringExact(-1, fields[4]);
if (tfIndex != CB_ERR)
{
pEnergyCombo->SetCurSel(tfIndex);
}
}
}
}
// <20>ر<EFBFBD><D8B1>ļ<EFBFBD>
file.Close();
}
void CCcdDataImageProcessingDlg::OnBnClickedSlectPathButton()
{
// <20><><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD>ѡ<EFBFBD><D1A1><EFBFBD>Ի<EFBFBD><D4BB><EFBFBD>
CFileDialog fileDlg(TRUE, _T("csv"), NULL, OFN_FILEMUSTEXIST | OFN_PATHMUSTEXIST, _T("Text Files (*.csv)|*.csv|All Files (*.*)|*.*||"));
// <20><>ʾ<EFBFBD>ļ<EFBFBD>ѡ<EFBFBD><D1A1><EFBFBD>Ի<EFBFBD><D4BB><EFBFBD>
if (fileDlg.DoModal() == IDOK)
{
// <20><>ȡѡ<C8A1><D1A1><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD>·<EFBFBD><C2B7>
CString filePath = fileDlg.GetPathName();
// <20><><EFBFBD><EFBFBD>·<EFBFBD><C2B7><EFBFBD><EFBFBD> m_CddDataPath <20>ؼ<EFBFBD>
m_CddDataPath.SetWindowText(filePath);
}
}
void CCcdDataImageProcessingDlg::OnBnClickedImageGenerateButton()
{
5 days ago
CWaitCursor wait;
CString cddDataPathInfo;
GetDlgItemText(IDC_CCD_DATA_PATH_EDIT, cddDataPathInfo);
m_colorSchemeManager.addScheme("Scheme1"); // <20><><EFBFBD>Ӷ<EFBFBD><D3B6><EFBFBD><EFBFBD><EFBFBD>ɫ<EFBFBD><C9AB><EFBFBD><EFBFBD>
//---<2D><>ȡ<EFBFBD><C8A1><EFBFBD>з<EFBFBD><D0B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>--------------------------------------------
// ѭ<><D1AD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ÿһ<C3BF><D2BB><EFBFBD>ؼ<EFBFBD>
for (int i = 0; i < 10; ++i) {
CString strPlan;
strPlan.Format(_T("%d"), i + 1);
// <20><>ȡ<EFBFBD><EFBFBD><E0BCAD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
CString minEnergy, maxEnergy, proportionEnergy, energyCombo, colorCombo;
GetDlgItemText(minEnergyCtrlIds[i], minEnergy);
GetDlgItemText(maxEnergyCtrlIds[i], maxEnergy);
//GetDlgItemText(proportionEnergyCtrlIds[i], proportionEnergy);
// <20><>ȡ<EFBFBD><C8A1>ɫ<EFBFBD><C9AB><EFBFBD>Ͽ<EFBFBD><CFBF><EFBFBD><EFBFBD><EFBFBD>
CComboBox* pColorComboBox = (CComboBox*)GetDlgItem(colorComboCtrlIds[i]);
int colorSel = pColorComboBox->GetCurSel(); // <20><>ȡ<EFBFBD><C8A1>ǰѡ<C7B0><D1A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
if (colorSel != CB_ERR) {
pColorComboBox->GetLBText(colorSel, colorCombo); // <20><>ȡ<EFBFBD><C8A1>ɫ<EFBFBD><C9AB><EFBFBD><EFBFBD>
}
else {
colorCombo = _T(""); // <20><><EFBFBD><EFBFBD>û<EFBFBD><C3BB>ѡ<EFBFBD><D1A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA>
}
// <20><>ȡTF<54><46><EFBFBD>Ͽ<EFBFBD><CFBF><EFBFBD><EFBFBD><EFBFBD>
CComboBox* pComboBox = (CComboBox*)GetDlgItem(energyComboCtrlIds[i]);
int energySel = pComboBox->GetCurSel(); // <20><>ȡ<EFBFBD><C8A1>ǰѡ<C7B0><D1A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
if (energySel != CB_ERR) {
pComboBox->GetLBText(energySel, energyCombo); // <20><>ȡTrue/False
}
else {
energyCombo = _T(""); // <20><><EFBFBD><EFBFBD>û<EFBFBD><C3BB>ѡ<EFBFBD><D1A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA>
}
// ת<><D7AA><EFBFBD><EFBFBD>С<EFBFBD><D0A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
float minEnergyValue = _tstof(minEnergy); // ת<><D7AA>Ϊ float
float maxEnergyValue = _tstof(maxEnergy); // ת<><D7AA>Ϊ float
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɫ
5 days ago
COLORREF color = RGB_WHITE; // Ĭ<><C4AC><EFBFBD><EFBFBD>ɫΪ<C9AB><CEAA>ɫ
if (colorCombo == colorNames[0]) { // Red
5 days ago
color = RGB_RED;
}
else if (colorCombo == colorNames[1]) { // Orange
5 days ago
color = RGB_ORANGE;
}
else if (colorCombo == colorNames[2]) { // Yellow
5 days ago
color = RGB_YELLOW;
}
else if (colorCombo == colorNames[3]) { // Green
5 days ago
color = RGB_GREEN;
}
else if (colorCombo == colorNames[4]) { // Cyan
5 days ago
color = RGB_CYAN;
}
else if (colorCombo == colorNames[5]) { // Blue
5 days ago
color = RGB_BLUE;
}
else if (colorCombo == colorNames[6]) { // Purple
5 days ago
color = RGB_PURPLE;
}
else if (colorCombo == colorNames[7]) { // Grey
5 days ago
color = RGB_GREY;
}
else if (colorCombo == colorNames[8]) { // Pink
5 days ago
color = RGB_PINK;
}
else if (colorCombo == colorNames[9]) { // Black
5 days ago
color = RGB_BLACK;
}
else if (colorCombo == colorNames[10]) { // White
5 days ago
color = RGB_WHITE;
}
else if (colorCombo == colorNames[11]) { // Brown
5 days ago
color = RGB_BROWN;
}
// <20><><EFBFBD><EFBFBD>ѡ<EFBFBD><D1A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӷ<EFBFBD>Χ
if (energyCombo == _T("True")) {
m_colorSchemeManager.schemes["Scheme1"].addRange(minEnergyValue, maxEnergyValue, color, proportionEnergyCtrlIds[i]); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɫ<EFBFBD><C9AB>Χ
m_proportionEnergy[proportionEnergyCtrlIds[i]] = 0;
}
}
//---<2D><>ͼ--------------------------------------------------------
m_colorSchemeManager.setCurrentScheme("Scheme1"); // <20><><EFBFBD>õ<EFBFBD>ǰ<EFBFBD><C7B0>ɫ<EFBFBD><C9AB><EFBFBD><EFBFBD>Ϊ Scheme1
5 days ago
gCsvToImg->m_colorSchemeManager = m_colorSchemeManager;
gCsvToImg->ReadCsv2Img(cddDataPathInfo);
5 days ago
auto Db2CString=[](float val)
{
CString str;
str.Format("%.3f", val);
return str;
};
auto &currentScheme = gCsvToImg->m_colorSchemeManager.currentScheme;
//CEdit <20>ؼ<EFBFBD><D8BC>е<EFBFBD>ռ<EFBFBD><D5BC>ֵ (ûȫ<C3BB><C8AB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD>쳣)
try
{
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();
}
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɫ
COLORREF CCcdDataImageProcessingDlg::GetColorFromEnergy(float energy)
{
if (m_colorSchemeManager.currentScheme == nullptr) {
5 days ago
return RGB_WHITE;
}
return m_colorSchemeManager.currentScheme->getColor(energy);
}
5 days ago
//void CCcdDataImageProcessingDlg::OnPaint()
//{
//
//
// gCsvToImg->ShowLastImg(&m_PicCtrl);
// return;
//
// CPaintDC dc(this); // <20><EFBFBD><E8B1B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// CRect clientRect;
// GetClientRect(&clientRect); // <20><>ȡ<EFBFBD>ͻ<EFBFBD><CDBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//
// // <20><><EFBFBD>ñ<EFBFBD><C3B1><EFBFBD>ɫ
// dc.FillSolidRect(clientRect, RGB(255, 255, 255));
//
// // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// CFont font;
// font.CreatePointFont(120, _T("Arial"));
// dc.SelectObject(&font);
//
// // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// int numRows = m_data.size();
// int numCols = (numRows > 0) ? m_data[0].size() : 0;
//
// // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD>գ<EFBFBD><D5A3><EFBFBD>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD>
// if (numRows == 0 || numCols == 0) {
// dc.TextOut(10, 10, _T("No data available"));
// return;
// }
//
// // <20><>ȡ<EFBFBD><C8A1><EFBFBD>ڵĿ<DAB5><C4BF>Ⱥ͸߶<CDB8>
// int maxImageWidth = clientRect.Width(); // ʹ<>ô<EFBFBD><C3B4>ڵĿ<DAB5><C4BF><EFBFBD>
// int maxImageHeight = clientRect.Height(); // ʹ<>ô<EFBFBD><C3B4>ڵĸ߶<C4B8>
//
// // <20><><EFBFBD><EFBFBD>ÿ<EFBFBD><C3BF><EFBFBD><EFBFBD><EFBFBD>ݿ<EFBFBD><DDBF>Ĵ<EFBFBD>С<EFBFBD><D0A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Σ<EFBFBD>
// float pointSize;
// if (numCols > 0) {
// // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD><CDB4>ڿ<EFBFBD><DABF>ȶ<EFBFBD>̬<EFBFBD><CCAC><EFBFBD><EFBFBD>ÿ<EFBFBD><C3BF><EFBFBD><EFBFBD><EFBFBD>ݿ<EFBFBD><DDBF>Ĵ<EFBFBD>С
// float maxPointSizeWidth = static_cast<float>(maxImageWidth) / numCols; // <20><><EFBFBD><EFBFBD>ÿ<EFBFBD><C3BF><EFBFBD><EFBFBD><EFBFBD>ݿ<EFBFBD><DDBF>ڿ<EFBFBD><DABF><EFBFBD><EFBFBD>ϵ<EFBFBD><CFB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>С
// pointSize = static_cast<int>(maxPointSizeWidth); // ѡ<><D1A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƵĴ<C6B5>С
// }
// else {
// pointSize = 10; // Ĭ<>ϴ<EFBFBD>С
// }
//
// // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>߶ȿ<DFB6><C8BF>ÿռ<D5BC><E4A3AC>̬<EFBFBD><CCAC><EFBFBD><EFBFBD>ÿ<EFBFBD><C3BF><EFBFBD><EFBFBD><EFBFBD>ݿ<EFBFBD><DDBF>ĸ߶<C4B8>
// int pointSizeHeight;
// if (numRows > 0) {
// // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD><CDB4>ڸ߶ȶ<DFB6>̬<EFBFBD><CCAC><EFBFBD><EFBFBD>ÿ<EFBFBD><C3BF><EFBFBD><EFBFBD><EFBFBD>ݿ<EFBFBD><DDBF>Ĵ<EFBFBD>С
// float maxPointSizeHeight = static_cast<float>(maxImageHeight) / numRows; // <20><><EFBFBD><EFBFBD>ÿ<EFBFBD><C3BF><EFBFBD><EFBFBD><EFBFBD>ݿ<EFBFBD><DDBF>ڸ߶<DAB8><DFB6>ϵ<EFBFBD><CFB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>С
// pointSizeHeight = static_cast<int>(maxPointSizeHeight); // ѡ<><D1A1><EFBFBD>߶<EFBFBD><DFB6><EFBFBD><EFBFBD>ƵĴ<C6B5>С
// }
// else {
// pointSizeHeight = 10; // Ĭ<>ϴ<EFBFBD>С
// }
//
// // ȡ<><C8A1>Сֵ<D0A1><D6B5>ȷ<EFBFBD><C8B7><EFBFBD><EFBFBD><EFBFBD>ݵ<EFBFBD><DDB5>ܹ<EFBFBD><DCB9><EFBFBD>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD>
// if (pointSize > pointSizeHeight)pointSize = pointSizeHeight;
//
// // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> pointSize ̫С<CCAB><D0A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD>Сֵ
// if (pointSize < 0.5) {
// pointSize = 0.5; // ȷ<><C8B7>ÿ<EFBFBD><C3BF><EFBFBD><EFBFBD><EFBFBD>ݵ<EFBFBD><DDB5><EFBFBD><EFBFBD><EFBFBD>Ϊ 1
// }
//
// // <20><><EFBFBD><EFBFBD>ƫ<EFBFBD><C6AB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʹͼ<CAB9><CDBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ұߣ<D2B1><DFA3>ϱ<EFBFBD><CFB1><EFBFBD><EFBFBD>ϱ<EFBFBD>
// int offsetX = 0;
// int offsetY = 0;
//
// // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ÿ<EFBFBD><C3BF><EFBFBD><EFBFBD><EFBFBD>ݵ<EFBFBD>
// for (int row = 0; row < numRows; ++row) {
// for (int col = 0; col < numCols; ++col) {
// // ȷ<><C8B7>ÿ<EFBFBD><C3BF>Ԫ<EFBFBD>ض<EFBFBD><D8B6><EFBFBD>Ч
// if (row < m_data.size() && col < m_data[row].size()) {
// try {
// float energy = std::stof(m_data[row][col]); // <20><><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD>ת<EFBFBD><D7AA>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//
// // <20><><EFBFBD><EFBFBD>ͳ<EFBFBD><CDB3>
// if (energy < m_minEnergy) m_minEnergy = energy; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Сֵ
// if (energy > m_maxEnergy) m_maxEnergy = energy; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ
//
// m_NumEnergy++;
//
// // <20><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD>ɫ
// COLORREF color = GetColorFromEnergy(energy);
// dc.SetDCBrushColor(color); // <20><><EFBFBD>û<EFBFBD>ˢ<EFBFBD><CBA2>ɫ
//
// // <20><><EFBFBD>㵱ǰ<E3B5B1><C7B0><EFBFBD>ݵ<EFBFBD>λ<EFBFBD>ã<EFBFBD><C3A3><EFBFBD><EFBFBD><EFBFBD>ƫ<EFBFBD><C6AB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// float scaledX = col * pointSize + offsetX;
// float scaledY = row * pointSize + offsetY;
//
// // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݿ<EFBFBD>
// CRect rect(scaledX, scaledY, scaledX + pointSize, scaledY + pointSize);
// dc.FillSolidRect(rect, color);
// }
// catch (const std::invalid_argument& e) {
// // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ч<EFBFBD><D0A7><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ĭ<EFBFBD><C4AC>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// continue; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>޷<EFBFBD>ת<EFBFBD><D7AA>Ϊ float<61><74><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǰԪ<C7B0><D4AA>
// }
// }
// }
// }
//
// // <20><>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD><EFBFBD>С<EFBFBD><D0A1><EFBFBD><EFBFBD>ֵ
// CString str;
// str.Format(_T("Min Energy: %.2f, Max Energy: %.2f"), m_minEnergy, m_maxEnergy);
// dc.TextOut(0, 1300, str);
// UpProportionEnergy();
//}
void CCcdDataImageProcessingDlg::OnBnClickedSaveImageButton()
{
// 1. ʹ<><CAB9><EFBFBD>ļ<EFBFBD><C4BC>Ի<EFBFBD><D4BB><EFBFBD>ѡ<EFBFBD>񱣴<EFBFBD>λ<EFBFBD>ú<EFBFBD><C3BA>ļ<EFBFBD><C4BC><EFBFBD>
CFileDialog saveFileDlg(FALSE, _T("png"), _T("saved_image.png"), OFN_OVERWRITEPROMPT, _T("PNG Files (*.png)|*.png|All Files (*.*)|*.*||"));
if (saveFileDlg.DoModal() == IDOK) {
// <20><>ȡ<EFBFBD>û<EFBFBD>ѡ<EFBFBD><D1A1><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD>·<EFBFBD><C2B7>
CString savePath = saveFileDlg.GetPathName();
// 2. <20><><EFBFBD><EFBFBD>ͼ<EFBFBD>񱣴溯<F1B1A3B4><E6BAAF>
5 days ago
gCsvToImg->SaveLastImg(savePath);
//SaveImage(savePath);
}
}
void CCcdDataImageProcessingDlg::SaveImage(const CString& savePath)
{
// <20><><EFBFBD><EFBFBD>һ<EFBFBD><D2BB> CImage <20><><EFBFBD><EFBFBD>
CImage image;
// <20><>ȡ<EFBFBD><C8A1>ǰ<EFBFBD><C7B0>ͼ<EFBFBD><CDBC><EFBFBD><EFBFBD><EFBFBD>ijߴ<C4B3>
CClientDC dc(this); // <20><>ȡ<EFBFBD><EFBFBD><E8B1B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
CRect rect;
GetClientRect(&rect);
// <20><><EFBFBD><EFBFBD>ͼ<EFBFBD><CDBC><EFBFBD><EFBFBD>24λ<34><CEBB>ɫ
image.Create(rect.Width(), rect.Height(), 24);
// <20><><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD>ڴ<EFBFBD><DAB4><EFBFBD><E8B1B8><EFBFBD><EFBFBD><EFBFBD>ģ<EFBFBD><C4A3><EFBFBD><EFBFBD>ڻ<EFBFBD><DABB>Ƶ<EFBFBD>ͼ<EFBFBD><CDBC>
CDC* pMemDC = CDC::FromHandle(image.GetDC());
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݸ<EFBFBD><DDB8>Ƶ<EFBFBD><C6B5>ڴ<EFBFBD><DAB4><EFBFBD><E8B1B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
pMemDC->BitBlt(0, 0, rect.Width(), rect.Height(), &dc, 0, 0, SRCCOPY);
// <20>ͷ<EFBFBD><CDB7><EFBFBD><E8B1B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
image.ReleaseDC();
// 3. <20><><EFBFBD><EFBFBD>ͼ<EFBFBD><CDBC><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD>
HRESULT hr = image.Save(savePath, Gdiplus::ImageFormatPNG); // <20><><EFBFBD><EFBFBD>Ϊ PNG <20><>ʽ
if (FAILED(hr)) {
AfxMessageBox(_T("<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͼ<EFBFBD><EFBFBD>ʧ<EFBFBD><EFBFBD>"));
}
else {
AfxMessageBox(_T("ͼ<EFBFBD><EFBFBD><EFBFBD>ѱ<EFBFBD><EFBFBD><EFBFBD>"));
}
}
5 days ago
void CCcdDataImageProcessingDlg::OnTimer(UINT_PTR nIDEvent)
{
// TODO: <20>ڴ<EFBFBD><DAB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>/<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ĭ<EFBFBD><C4AC>ֵ
gCsvToImg->ShowLastImg(&m_PicCtrl);
CDialogEx::OnTimer(nIDEvent);
}