⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 usedlgs.cpp

📁 医学图象处理系统
💻 CPP
📖 第 1 页 / 共 4 页
字号:

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 + -