twain2/ImageProcess.cpp

158 lines
7.7 KiB
C++
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

// ImageProcess.cpp: 实现文件
//
#include "stdafx.h"
#include "ImageProcess.h"
#include "afxdialogex.h"
#include "resource.h"
//#include "UI_INI.h"
// ImageProcess 对话框0
//extern CUI_INI* m_pUI_INI;
IMPLEMENT_DYNAMIC(ImageProcess, CDialog)
ImageProcess::ImageProcess(CWnd* pParent /*=nullptr*/)
: CDialog(IDD_DIALOG_PAGEIMGPROC, pParent)
{
}
ImageProcess::~ImageProcess()
{
}
void ImageProcess::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
DDX_Control(pDX, IDC_CMBFILTER, m_cmBoxFilter);
DDX_Control(pDX, IDC_SLDEAGEENHANCE, m_sldEageEnhance);
DDX_Control(pDX, IDC_SLDCHARENHACE, m_sldCharEnhance);
DDX_Control(pDX,IDC_SLDOUTHOLE,m_sldOutHole);
}
BEGIN_MESSAGE_MAP(ImageProcess, CDialog)
ON_WM_HSCROLL()
ON_BN_CLICKED(IDC_CKREMOVEHOLE, &ImageProcess::OnBnClickedCkremovehole)
END_MESSAGE_MAP()
// ImageProcess 消息处理程序
BOOL ImageProcess::OnInitDialog()
{
CDialog::OnInitDialog();
OnInitcmBoxFilter(0);
OnInitsldCharEnhance(4);
OnInitsldEageEnhance(0);
OnInitsldOutHole(10);
// TODO: 在此添加额外的初始化
return TRUE; // return TRUE unless you set the focus to a control
// 异常: OCX 属性页应返回 FALSE
}
void ImageProcess::OnHScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar)
{
// TODO: 在此添加消息处理程序代码和/或调用默认值
UpdateData(TRUE);
switch(pScrollBar->GetDlgCtrlID())
{
case IDC_SLDOUTHOLE:
{
CSliderCtrl *slc_C = (CSliderCtrl*)GetDlgItem(IDC_SLDOUTHOLE);
int valueC = slc_C->GetPos();
double outv=valueC/100.0;
char strC[10];
sprintf(strC,"%0.2f",outv);
SetDlgItemText(IDC_LBOUTHOLEVALUE, strC);
break;
}
case IDC_SLDCHARENHACE:
break;
default:
break;
}
CDialog::OnHScroll(nSBCode, nPos, pScrollBar);
UpdateData(FALSE);
}
void ImageProcess::OnInitcmBoxFilter(int selectIndex)
{
m_cmBoxFilter.InsertString(0,_T("不除色"));
m_cmBoxFilter.InsertString(1, _T("除红色"));
m_cmBoxFilter.InsertString(2, _T("除绿色"));
m_cmBoxFilter.InsertString(3, _T("除蓝色"));
m_cmBoxFilter.InsertString(4, _T("红色增强"));
m_cmBoxFilter.InsertString(5, _T("绿色增强"));
m_cmBoxFilter.InsertString(6, _T("蓝色增强"));
m_cmBoxFilter.SetCurSel(selectIndex);
}
void ImageProcess::OnInitsldEageEnhance(int selectIndex)
{
m_sldEageEnhance.SetRange(-2,2);
m_sldEageEnhance.SetTicFreq(1);
m_sldEageEnhance.SetPos(selectIndex);
}
void ImageProcess::OnInitsldCharEnhance(int selectIndex)
{
m_sldCharEnhance.SetRange(1, 7);
m_sldCharEnhance.SetTicFreq(1);
m_sldCharEnhance.SetPos(selectIndex);
}
void ImageProcess::OnInitsldOutHole(int selectIndex)
{
m_sldOutHole.SetRange(1,50);
m_sldOutHole.SetTicFreq(5);
m_sldOutHole.SetPos(selectIndex);
}
void ImageProcess::OnBnClickedCkremovehole()
{
// TODO: 在此添加控件通知处理程序代码
int checked= ((CButton*)GetDlgItem(IDC_CKREMOVEHOLE))->GetCheck();
EnableOutHoleCheckChanged(checked);
}
void ImageProcess::EnableOutHoleCheckChanged(BOOL enable)
{
((CButton*)GetDlgItem(IDC_CKREMOVEHOLE))->SetCheck(enable);
((CStatic*) GetDlgItem(IDC_LBOUTHOLEVALUE))->EnableWindow(enable==1?TRUE:FALSE);
((CSliderCtrl*)GetDlgItem(IDC_SLDOUTHOLE))->EnableWindow(enable==1?TRUE:FALSE);
((CStatic*)GetDlgItem(IDC_LBSEARCHAREA))->EnableWindow(enable==1?TRUE:FALSE);
}
void ImageProcess::SetOutHoleValue(int value)
{
((CSliderCtrl*)GetDlgItem(IDC_SLDOUTHOLE))->SetPos(value);
CString lbstr;
lbstr.Format("%0.2f",value/100.0);
((CStatic*)GetDlgItem(IDC_LBOUTHOLEVALUE))->SetWindowText(lbstr.GetBuffer());
}
void ImageProcess::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;
}
}