2020-03-11 01:58:06 +00:00
|
|
|
|
// CImageProcPage.cpp: 实现文件
|
|
|
|
|
//
|
|
|
|
|
|
|
|
|
|
#include "stdafx.h"
|
|
|
|
|
#include "CImageProcPage.h"
|
|
|
|
|
#include "afxdialogex.h"
|
|
|
|
|
#include "resource.h"
|
|
|
|
|
#include <vector>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
static std::vector<CString> filters = {
|
|
|
|
|
_T("不除色"),
|
|
|
|
|
_T("除红色"),
|
|
|
|
|
_T("除绿色"),
|
|
|
|
|
_T("除蓝色"),
|
|
|
|
|
_T("红色增强"),
|
|
|
|
|
_T("绿色增强"),
|
|
|
|
|
_T("蓝色增强")
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
static std::vector<CString> sharpens = {
|
|
|
|
|
_T("无"),
|
|
|
|
|
_T("锐化"),
|
|
|
|
|
_T("进一步锐化"),
|
|
|
|
|
_T("模糊"),
|
|
|
|
|
_T("进一步模糊")
|
|
|
|
|
};
|
|
|
|
|
// CImageProcPage 对话框
|
|
|
|
|
|
|
|
|
|
IMPLEMENT_DYNAMIC(CImageProcPage, CTabPageSSL)
|
|
|
|
|
|
|
|
|
|
CImageProcPage::CImageProcPage(CWnd* pParent /*=nullptr*/)
|
|
|
|
|
: CTabPageSSL(IDD_PAGEIMGPROC, pParent)
|
|
|
|
|
, m_ckbFillBlack(FALSE)
|
|
|
|
|
, m_ckbAutoDeskrew(FALSE)
|
|
|
|
|
, m_ckbMultioutput(FALSE)
|
|
|
|
|
, m_ckbRemoveHole(FALSE)
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
CImageProcPage::~CImageProcPage()
|
|
|
|
|
{
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void CImageProcPage::ImageProcPageUpdate(int val)
|
|
|
|
|
{
|
|
|
|
|
CComboBox* m_temp = (CComboBox*)(GetDlgItem(IDC_CMBFILTER));
|
|
|
|
|
CButton* t_chMultiOutput = (CButton*)(GetDlgItem(IDC_CKMULTIOUTPUT));
|
|
|
|
|
CComboBox* m_temp_sharpen = (CComboBox*)(GetDlgItem(IDC_CMBSHARPEN));
|
|
|
|
|
|
|
|
|
|
int ival = (val == 0 ? 0 : (val == 1 ? 1 : 2));
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (0 == ival)//彩色
|
|
|
|
|
{
|
|
|
|
|
m_temp->SetCurSel(0);
|
|
|
|
|
m_temp->EnableWindow(FALSE);
|
|
|
|
|
t_chMultiOutput->SetCheck(FALSE);
|
|
|
|
|
t_chMultiOutput->EnableWindow(TRUE);
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
m_temp->SetCurSel(0);
|
|
|
|
|
m_temp->EnableWindow(TRUE);
|
|
|
|
|
t_chMultiOutput->SetCheck(FALSE);
|
|
|
|
|
t_chMultiOutput->EnableWindow(FALSE);
|
|
|
|
|
}
|
|
|
|
|
|
2020-04-18 03:18:06 +00:00
|
|
|
|
bool enabele = ival <= 1;//彩色或灰度
|
|
|
|
|
if (!enabele) {
|
|
|
|
|
m_temp_sharpen->SetCurSel(0);
|
|
|
|
|
}
|
2020-03-11 01:58:06 +00:00
|
|
|
|
m_temp_sharpen->EnableWindow(enabele);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void CImageProcPage::ImageAutoDescrewUpdate(int val)
|
|
|
|
|
{
|
|
|
|
|
//CButton* t_chAutoDeskrew = (CButton*)(GetDlgItem(IDC_CKAUTODESKREW));
|
|
|
|
|
|
|
|
|
|
//if (16 == val)
|
|
|
|
|
//{
|
|
|
|
|
// t_chAutoDeskrew->SetCheck(TRUE);
|
|
|
|
|
//}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void CImageProcPage::DoDataExchange(CDataExchange* pDX)
|
|
|
|
|
{
|
|
|
|
|
CTabPageSSL::DoDataExchange(pDX);
|
|
|
|
|
DDX_Control(pDX, IDC_SLDOUTHOLE, m_slider_hole);
|
|
|
|
|
DDX_Control(pDX, IDC_EDIT_HOLE, m_edit_hole);
|
|
|
|
|
DDX_Control(pDX, IDC_CMBFILTER, m_cmBoxFilter);
|
|
|
|
|
DDX_Control(pDX, IDC_CMBSHARPEN, m_cmBoxSharpen);
|
|
|
|
|
DDX_Check(pDX, IDC_CKFILLBLACKRECT, m_ckbFillBlack);
|
|
|
|
|
DDX_Check(pDX, IDC_CKAUTODESKREW, m_ckbAutoDeskrew);
|
|
|
|
|
DDX_Check(pDX, IDC_CKMULTIOUTPUT, m_ckbMultioutput);
|
|
|
|
|
DDX_Check(pDX, IDC_CKREMOVEHOLE, m_ckbRemoveHole);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
BOOL CImageProcPage::OnInitDialog()
|
|
|
|
|
{
|
|
|
|
|
CTabPageSSL::OnInitDialog();
|
|
|
|
|
m_edit_hole.SetSlideLink(this, IDC_SLDOUTHOLE);
|
|
|
|
|
m_edit_hole.SetParams(0.01, 0.50, 10, _T("%0.2f"));
|
|
|
|
|
m_edit_hole.SetValue(0.10);
|
|
|
|
|
|
|
|
|
|
for (int i = 0; i < filters.size(); i++)
|
|
|
|
|
{
|
|
|
|
|
m_cmBoxFilter.InsertString(i, filters[i]);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
for (int i = 0; i < sharpens.size(); i++)
|
|
|
|
|
{
|
|
|
|
|
m_cmBoxSharpen.InsertString(i, sharpens[i]);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return true;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
BEGIN_MESSAGE_MAP(CImageProcPage, CTabPageSSL)
|
|
|
|
|
ON_BN_CLICKED(IDC_CKREMOVEHOLE, &CImageProcPage::OnCtrlChange)
|
|
|
|
|
END_MESSAGE_MAP()
|
|
|
|
|
|
|
|
|
|
void CImageProcPage::EnableOutHoleCheckChanged(BOOL enable)
|
|
|
|
|
{
|
|
|
|
|
UpdateData();
|
|
|
|
|
((CButton*)GetDlgItem(IDC_EDIT_HOLE))->SetCheck(enable);
|
|
|
|
|
GetDlgItem(IDC_EDIT_HOLE)->EnableWindow(enable);
|
|
|
|
|
GetDlgItem(IDC_SLDOUTHOLE)->EnableWindow(enable);
|
|
|
|
|
GetDlgItem(IDC_EDIT_HOLE)->EnableWindow(enable);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void CImageProcPage::SetOutHoleValue(int value)
|
|
|
|
|
{
|
|
|
|
|
m_edit_hole.SetValue(value);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void CImageProcPage::SetMultiOutputEnable(int pixtype, bool enable)
|
|
|
|
|
{
|
|
|
|
|
switch (pixtype)
|
|
|
|
|
{
|
|
|
|
|
case 2://彩色
|
|
|
|
|
((CButton*)GetDlgItem(IDC_CKMULTIOUTPUT))->SetCheck(enable);
|
|
|
|
|
((CButton*)GetDlgItem(IDC_CKMULTIOUTPUT))->EnableWindow(TRUE);
|
|
|
|
|
break;
|
|
|
|
|
case 0://灰度 黑白
|
|
|
|
|
case 1:
|
|
|
|
|
((CButton*)GetDlgItem(IDC_CKMULTIOUTPUT))->SetCheck(FALSE);
|
|
|
|
|
((CButton*)GetDlgItem(IDC_CKMULTIOUTPUT))->EnableWindow(FALSE);
|
|
|
|
|
break;
|
|
|
|
|
default:
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
void CImageProcPage::OnCtrlChange()
|
|
|
|
|
{
|
|
|
|
|
// TODO: 在此添加控件通知处理程序代码
|
|
|
|
|
UpdateData();
|
|
|
|
|
m_edit_hole.EnableWindow(m_ckbRemoveHole);
|
|
|
|
|
m_slider_hole.EnableWindow(m_ckbRemoveHole);
|
|
|
|
|
}
|