📄 usedlgs.cpp
字号:
BEGIN_MESSAGE_MAP(CTargetgrayDlg, CDialog)
//{{AFX_MSG_MAP(CTargetgrayDlg)
ON_BN_CLICKED(IDC_RADIO1, OnRadio1)
ON_BN_CLICKED(IDC_RADIO2, OnRadio2)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CTargetgrayDlg message handlers
void CTargetgrayDlg::OnRadio1()
{
TargetGray = 0;
}
void CTargetgrayDlg::OnRadio2()
{
TargetGray = 255;
}
void CTargetgrayDlg::OnOK()
{
//int Answer = AfxMessageBox("请正确确定目标的灰度值\n否则您如果进行区域标记\n那将会造成堆栈溢出的!!",
// MB_OKCANCEL|MB_ICONQUESTION );
//if(Answer==IDOK)
CDialog::OnOK();
}
/////////////////////////////////////////////////////////////////////////////
// C2DHistogram dialog
C2DHistogram::C2DHistogram(CImageLABDoc *_pDoc, int _type, CWnd* pParent /*=NULL*/)
: CDialog(C2DHistogram::IDD, pParent)
{
//{{AFX_DATA_INIT(C2DHistogram)
// NOTE: the ClassWizard will add member initialization here
//}}AFX_DATA_INIT
m_His2DImage.CreateEmpty(256, 256, 8, 0);
m_pDoc = _pDoc;
m_Type = _type;
hW = 1;
}
void C2DHistogram::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(C2DHistogram)
// NOTE: the ClassWizard will add DDX and DDV calls here
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(C2DHistogram, CDialog)
//{{AFX_MSG_MAP(C2DHistogram)
ON_WM_PAINT()
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// C2DHistogram message handlers
BOOL C2DHistogram::OnInitDialog()
{
CDialog::OnInitDialog();
// TODO: Add extra initialization here
int DlgW = 256 + 65;
int DlgH = 256 + 65;
BuildHist2D();
CRect rect;
GetWindowRect(&rect);
SetWindowPos(NULL,rect.left,rect.top, DlgW, DlgH, SWP_NOACTIVATE);
return TRUE; // return TRUE unless you set the focus to a control
// EXCEPTION: OCX Property Pages should return FALSE
}
void C2DHistogram::OnPaint()
{
CPaintDC dc(this); // device context for painting
// TODO: Add your message handler code here
int i, x ,y;
int ox = 65, oy = 65;
int ix = 60, iy = 60;
double fHistH = 56;
double scale1 = fHistH / MaxGray;
double scale2 = fHistH / MaxAver;
dc.SetBkMode(TRANSPARENT);
dc.SetTextAlign( TA_RIGHT | TA_BOTTOM);
dc.TextOut(ox+ 2, oy+ 2,"(0,0)");
dc.MoveTo(ox, iy); dc.LineTo(ox+ 256, iy);
dc.MoveTo(ix, oy); dc.LineTo(ix, oy+ 256);
for(x= ox, i= 0; i <256; i++, x++)
{
dc.MoveTo(x, iy);
dc.LineTo(x, iy - int( ihistGray[i]* scale1+ 0.5));
}
for(y= oy, i= 0; i <256; i++, y++)
{
dc.MoveTo(ix, y);
dc.LineTo(ix- int( iHistAve[i]* scale2+ 0.5), y);
}
m_His2DImage.ShowCurrentImage(&dc, ox, oy, ox+ 256, oy+ 256);
// Do not call CDialog::OnPaint() for painting messages
}
void C2DHistogram::BuildHist2D()
{
int size = 256* sizeof(int);
memset( iHist2d, 0, 256* size);
memset( ihistGray, 0, size);
memset( iHistAve, 0, size);
int i, j, k, l, iT;
int Area = (hW+ hW+ 1)* (hW+ hW+ 1);
int hArea = Area /2;
CImage &tImg = m_pDoc->Image;
if( tImg.m_lpDibArray != NULL && tImg.m_wImageDepth == 8 )
{
int x1, x2, y1, y2;
if(m_pDoc->m_pView->DashRectDrawed)
{
CPoint p1, p2;
m_pDoc->m_pView->GetSelectArea(p1, p2);
x1 = max( p1.x, hW);
x2 = min( p2.x, tImg.m_ImageWidth- hW);
y1 = max( p1.y, hW);
y2 = min( p2.y, tImg.m_ImageHeight- hW);
}
else
{
x1 = y1 = hW;
x2 = tImg.m_ImageWidth - hW;
y2 = tImg.m_ImageHeight- hW;
}
if( m_Type == 0)
{
for(j= y1; j< y2; j++)
{
for(i= x1; i< x2; i++)
{
for(iT = 0, k = -hW; k<= hW; k++)
{
for(l = -hW; l<= hW; l++)
{
iT += tImg.RowAddress[j+ k][i+ l];
}
}
iT += hArea;
iT /= Area;
ihistGray[ tImg.RowAddress[j][i] ]++;
iHistAve[ iT ]++;
iHist2d[iT][tImg.RowAddress[j][i]]++;
}
}
}
else if( m_Type == 1)
{
CAllImage SobelImg(m_pDoc->Image);
SobelImg.ImageProcess(PT_Sharpen_Sobel);
for(j= y1; j< y2; j++)
{
for(i= x1; i< x2; i++)
{
if( SobelImg.RowAddress[j][i] > 40)
ihistGray[ tImg.RowAddress[j][i] ]++;
iHistAve[ SobelImg.RowAddress[j][i] ]++;
iHist2d[SobelImg.RowAddress[j][i]][tImg.RowAddress[j][i]]++;
}
}
}
int_to_uchar(iHist2d[0], m_His2DImage.m_lpDibArray, m_His2DImage.m_ImageSize);
MaxGray = MaxAver = 0;
for(int i= 0; i< 256; i++)
{
if( MaxGray< ihistGray[i]) MaxGray = ihistGray[i];
if( MaxAver< iHistAve[i] ) MaxAver = iHistAve[i];
}
m_His2DImage.Inverse();
}
}
/////////////////////////////////////////////////////////////////////////////
// CGaussSigmaDlg dialog
CGaussSigmaDlg::CGaussSigmaDlg(CWnd* pParent /*=NULL*/)
: CDialog(CGaussSigmaDlg::IDD, pParent)
{
//{{AFX_DATA_INIT(CGaussSigmaDlg)
m_Sigma = 2;
//}}AFX_DATA_INIT
MinSigma = 0.5, MaxSigma =10.0;
}
void CGaussSigmaDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CGaussSigmaDlg)
DDX_Control(pDX, IDC_SLIDER1, m_Slide1);
DDX_Text(pDX, IDC_EDIT1, m_Sigma);
DDV_MinMaxDouble(pDX, m_Sigma, 0.5, 10.);
DDX_Slider(pDX, IDC_SLIDER1, m_SlidePos);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CGaussSigmaDlg, CDialog)
//{{AFX_MSG_MAP(CGaussSigmaDlg)
ON_WM_HSCROLL()
ON_WM_SETCURSOR()
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
////////////////////////////////////////////////////////////////////////////
// CGaussSigmaDlg message handlers
void CGaussSigmaDlg::OnHScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar)
{
CSliderCtrl* pSlider = (CSliderCtrl*)pScrollBar;
if(pSlider!= NULL)
{
m_SlidePos = pSlider->GetPos();
m_Sigma = double(m_SlidePos)/100*(MaxSigma- MinSigma) + MinSigma;
UpdateData(FALSE);
}
CDialog::OnHScroll(nSBCode, nPos, pScrollBar);
}
BOOL CGaussSigmaDlg::OnInitDialog()
{
CDialog::OnInitDialog();
// TODO: Add extra initialization here
m_Slide1.SetRange(0, 100);
m_SlidePos = int((m_Sigma- MinSigma)/(MaxSigma- MinSigma)*100+0.5);
m_Slide1.SetPos(m_SlidePos);
return TRUE; // return TRUE unless you set the focus to a control
// EXCEPTION: OCX Property Pages should return FALSE
}
/////////////////////////////////////////////////////////////////////////////
// CCannyParam dialog
CCannyParam::CCannyParam(CWnd* pParent /*=NULL*/)
: CDialog(CCannyParam::IDD, pParent)
{
//{{AFX_DATA_INIT(CCannyParam)
m_sigma = 2.0f;
m_lambda = 4.0f;
m_tau = 0.0f;
m_Operator_Type = 0;
//}}AFX_DATA_INIT
}
void CCannyParam::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CCannyParam)
DDX_Control(pDX, IDC_SLIDER3, m_slider3);
DDX_Control(pDX, IDC_SLIDER1, m_slider1);
DDX_Control(pDX, IDC_SLIDER2, m_slider2);
DDX_Text(pDX, IDC_EDIT1, m_sigma);
DDV_MinMaxFloat(pDX, m_sigma, 0.f, 20.f);
DDX_Text(pDX, IDC_EDIT2, m_lambda);
DDV_MinMaxFloat(pDX, m_lambda, 0.f, 20.f);
DDX_Text(pDX, IDC_EDIT3, m_tau);
DDV_MinMaxFloat(pDX, m_tau, 0.f, 1.f);
DDX_Radio(pDX, IDC_RADIO1, m_Operator_Type);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CCannyParam, CDialog)
//{{AFX_MSG_MAP(CCannyParam)
ON_WM_HSCROLL()
ON_BN_CLICKED(IDC_RADIO1, OnRadio1)
ON_BN_CLICKED(IDC_RADIO2, OnRadio2)
ON_BN_CLICKED(IDC_RADIO3, OnRadio3)
ON_BN_CLICKED(IDC_RADIO4, OnRadio4)
ON_WM_SETCURSOR()
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CCannyParam message handlers
BOOL CCannyParam::OnInitDialog()
{
CDialog::OnInitDialog();
m_slider1.SetRange(0, 100);
m_slider2.SetRange(0, 100);
m_slider3.SetRange(0, 100);
m_slider1.SetPos(int( m_sigma/ 20.0* 100 + 0.5));
m_slider2.SetPos(int( m_lambda/ 20.0* 100 + 0.5));
m_slider3.SetPos(int( m_tau* 100 + 0.5));
return TRUE; // return TRUE unless you set the focus to a control
// EXCEPTION: OCX Property Pages should return FALSE
}
void CCannyParam::OnHScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar)
{
CSliderCtrl* pSlider = (CSliderCtrl*)pScrollBar;
if(pSlider!= NULL)
{
if( pSlider == &m_slider1 )
{
m_SlidePos = pSlider->GetPos();
m_sigma = float(m_SlidePos)/ 100.f* 20.f;
}
if( pSlider == &m_slider2 )
{
m_SlidePos = pSlider->GetPos();
m_lambda = float(m_SlidePos)/ 100.f* 20.f;
}
if( pSlider == &m_slider3 )
{
m_SlidePos = pSlider->GetPos();
m_tau = float(m_SlidePos)/ 100.f;
}
UpdateData(false);
}
CDialog::OnHScroll(nSBCode, nPos, pScrollBar);
}
void CCannyParam::OnRadio1()
{
m_Operator_Type = 0;
pEdit = (CEdit*)GetDlgItem(IDC_EDIT1);
pEdit->EnableWindow(true);
pEdit = (CEdit*)GetDlgItem(IDC_EDIT2);
pEdit->EnableWindow(false);
pEdit = (CEdit*)GetDlgItem(IDC_EDIT3);
pEdit->EnableWindow(false);
m_slider1.EnableWindow(true);
m_slider2.EnableWindow(false);
m_slider3.EnableWindow(false);
}
void CCannyParam::OnRadio2()
{
m_Operator_Type = 1;
pEdit = (CEdit*)GetDlgItem(IDC_EDIT1);
pEdit->EnableWindow(false);
pEdit = (CEdit*)GetDlgItem(IDC_EDIT2);
pEdit->EnableWindow(true);
pEdit = (CEdit*)GetDlgItem(IDC_EDIT3);
pEdit->EnableWindow(false);
m_slider1.EnableWindow(false);
m_slider2.EnableWindow(true);
m_slider3.EnableWindow(false);
}
void CCannyParam::OnRadio3()
{
m_Operator_Type = 2;
pEdit = (CEdit*)GetDlgItem(IDC_EDIT1);
pEdit->EnableWindow(false);
pEdit = (CEdit*)GetDlgItem(IDC_EDIT2);
pEdit->EnableWindow(true);
pEdit = (CEdit*)GetDlgItem(IDC_EDIT3);
pEdit->EnableWindow(true);
m_slider1.EnableWindow(false);
m_slider2.EnableWindow(true);
m_slider3.EnableWindow(true);
}
void CCannyParam::OnRadio4()
{
m_Operator_Type = 3;
pEdit = (CEdit*)GetDlgItem(IDC_EDIT1);
pEdit->EnableWindow(false);
pEdit = (CEdit*)GetDlgItem(IDC_EDIT2);
pEdit->EnableWindow(true);
pEdit = (CEdit*)GetDlgItem(IDC_EDIT3);
pEdit->EnableWindow(true);
m_slider1.EnableWindow(false);
m_slider2.EnableWindow(true);
m_slider3.EnableWindow(true);
}
BOOL CCannyParam::OnSetCursor(CWnd* pWnd, UINT nHitTest, UINT message)
{
if(nHitTest == HTCLIENT)
{
switch(pWnd->GetDlgCtrlID())
{
case IDC_SLIDER1:
case IDC_SLIDER2:
case IDC_SLIDER3:
SetCursor( AfxGetApp()->LoadCursor(IDC_HANDWANTGRAB));
return TRUE;
}
}
return CDialog::OnSetCursor(pWnd, nHitTest, message);
}
BOOL CManualBinaryDlg::OnSetCursor(CWnd* pWnd, UINT nHitTest, UINT message)
{
if(nHitTest == HTCLIENT)
{
switch(pWnd->GetDlgCtrlID())
{
case IDC_SLIDER1:
SetCursor( AfxGetApp()->LoadCursor(IDC_HANDWANTGRAB));
return TRUE;
}
}
return CDialog::OnSetCursor(pWnd, nHitTest, message);
}
BOOL CGaussSigmaDlg::OnSetCursor(CWnd* pWnd, UINT nHitTest, UINT message)
{
if(nHitTest == HTCLIENT)
{
switch(pWnd->GetDlgCtrlID())
{
case IDC_SLIDER1:
SetCursor( AfxGetApp()->LoadCursor(IDC_HANDWANTGRAB));
return TRUE;
}
}
return CDialog::OnSetCursor(pWnd, nHitTest, message);
}
/////////////////////////////////////////////////////////////////////////////
// CLABSaveDlg dialog
CLABSaveDlg::CLABSaveDlg(int _DriveNum, CWnd* pParent /*=NULL*/)
: CDialog(CLABSaveDlg::IDD, pParent)
{
//{{AFX_DATA_INIT(CLABSaveDlg)
m_FileName = _T("");
m_FileNameExt = _T("压缩格式");
//}}AFX_DATA_INIT
DriveNum = _DriveNum;
SelectDrive = 1;
}
void CLABSaveDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CLABSaveDlg)
DDX_Control(pDX, IDC_COMBO1, m_Combo1);
DDX_Text(pDX, IDC_FILENAME, m_FileName);
DDX_Text(pDX, IDC_FILENAMEEXT, m_FileNameExt);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CLABSaveDlg, CDialog)
//{{AFX_MSG_MAP(CLABSaveDlg)
ON_CBN_SELCHANGE(IDC_COMBO1, OnSelchangeCombo1)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CLABSaveDlg message handlers
BOOL CLABSaveDlg::OnInitDialog()
{
CDialog::OnInitDialog();
// TODO: Add extra initialization here
CString DiskTag;
for(int i= 0; i < DriveNum; i++)
{
DiskTag.Format("%c:", 'C'+ i);
m_Combo1.InsertString(i, DiskTag);
}
m_Combo1.SetCurSel(1);
// m_FileNameExt.SetCurSel(1);
return TRUE; // return TRUE unless you set the focus to a control
// EXCEPTION: OCX Property Pages should return FALSE
}
void CLABSaveDlg::OnSelchangeCombo1()
{
SelectDrive = m_Combo1.GetCurSel();
}
/////////////////////////////////////////////////////////////////////////////
// CPrintModeDlg dialog
CPrintModeDlg::CPrintModeDlg(CWnd* pParent /*=NULL*/)
: CDialog(CPrintModeDlg::IDD, pParent)
{
//{{AFX_DATA_INIT(CPrintModeDlg)
m_Select = 0;
//}}AFX_DATA_INIT
}
void CPrintModeDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CPrintModeDlg)
DDX_Radio(pDX, IDC_RADIO1, m_Select);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CPrintModeDlg, CDialog)
//{{AFX_MSG_MAP(CPrintModeDlg)
// NOTE: the ClassWizard will add message map macros here
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CPrintModeDlg message handlers
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -