DlgMedian.cpp
上传用户:panpan8800
上传日期:2013-06-29
资源大小:274k
文件大小:4k
源码类别:

图形图像处理

开发平台:

Visual C++

  1. // DlgMedian.cpp : implementation file
  2. //
  3. #include "stdafx.h"
  4. #include "ImageProcessing.h"
  5. #include "DlgMedian.h"
  6. #ifdef _DEBUG
  7. #define new DEBUG_NEW
  8. #undef THIS_FILE
  9. static char THIS_FILE[] = __FILE__;
  10. #endif
  11. /////////////////////////////////////////////////////////////////////////////
  12. // CDlgMedian dialog
  13. CDlgMedian::CDlgMedian(CWnd* pParent /*=NULL*/)
  14. : CDialog(CDlgMedian::IDD, pParent)
  15. {
  16. //{{AFX_DATA_INIT(CDlgMedian)
  17. // 初始化数据
  18. m_nFilterCenX = 0;
  19. m_nFilterCenY = 0;
  20. m_nFilterHeight = 0;
  21. m_nFilterWidth = 0;
  22. m_nFilterType = -1;
  23. //}}AFX_DATA_INIT
  24. }
  25. void CDlgMedian::DoDataExchange(CDataExchange* pDX)
  26. {
  27. CDialog::DoDataExchange(pDX);
  28. //{{AFX_DATA_MAP(CDlgMedian)
  29. DDX_Text(pDX, IDC_EDIT_MEDIAN_FILCENX, m_nFilterCenX);
  30. DDX_Text(pDX, IDC_EDIT_MEDIAN_FILCENY, m_nFilterCenY);
  31. DDX_Text(pDX, IDC_EDIT_MEDIAN_FILH, m_nFilterHeight);
  32. DDV_MinMaxInt(pDX, m_nFilterHeight, 1, 8);
  33. DDX_Text(pDX, IDC_EDIT_MEDIAN_FILW, m_nFilterWidth);
  34. DDV_MinMaxInt(pDX, m_nFilterWidth, 1, 8);
  35. DDX_Radio(pDX, IDC_RADIO_MEDIAN_VERTICAL, m_nFilterType);
  36. //}}AFX_DATA_MAP
  37. }
  38. BEGIN_MESSAGE_MAP(CDlgMedian, CDialog)
  39. //{{AFX_MSG_MAP(CDlgMedian)
  40. ON_BN_CLICKED(IDC_RADIO_MEDIAN_2DIMEN, OnRadioMedian2dimen)
  41. ON_BN_CLICKED(IDC_RADIO_MEDIAN_HORIZON, OnRadioMedianHorizon)
  42. ON_BN_CLICKED(IDC_RADIO_MEDIAN_VERTICAL, OnRadioMedianVertical)
  43. ON_BN_CLICKED(IDC_RADIO_MEDIAN_SELFDEF, OnRadioMedianSelfdef)
  44. //}}AFX_MSG_MAP
  45. END_MESSAGE_MAP()
  46. /////////////////////////////////////////////////////////////////////////////
  47. // CDlgMedian message handlers
  48. void CDlgMedian::OnRadioMedian2dimen() 
  49. {
  50. // 3×3模板
  51. m_nFilterType   = 2;
  52. m_nFilterHeight = 3;
  53. m_nFilterWidth  = 3;
  54. m_nFilterCenX   = 1;
  55. m_nFilterCenY   = 1;
  56. // 设置文本框不可用
  57. (CEdit *) GetDlgItem(IDC_EDIT_MEDIAN_FILH)->EnableWindow(FALSE);
  58. (CEdit *) GetDlgItem(IDC_EDIT_MEDIAN_FILW)->EnableWindow(FALSE);
  59. (CEdit *) GetDlgItem(IDC_EDIT_MEDIAN_FILCENX)->EnableWindow(FALSE);
  60. (CEdit *) GetDlgItem(IDC_EDIT_MEDIAN_FILCENY)->EnableWindow(FALSE);
  61. // 更新
  62. UpdateData(FALSE);
  63. }
  64. void CDlgMedian::OnRadioMedianHorizon() 
  65. {
  66. // 1×3模板
  67. m_nFilterType   = 1;
  68. m_nFilterHeight = 1;
  69. m_nFilterWidth  = 3;
  70. m_nFilterCenX   = 1;
  71. m_nFilterCenY   = 0;
  72. // 设置文本框不可用
  73. (CEdit *) GetDlgItem(IDC_EDIT_MEDIAN_FILH)->EnableWindow(FALSE);
  74. (CEdit *) GetDlgItem(IDC_EDIT_MEDIAN_FILW)->EnableWindow(FALSE);
  75. (CEdit *) GetDlgItem(IDC_EDIT_MEDIAN_FILCENX)->EnableWindow(FALSE);
  76. (CEdit *) GetDlgItem(IDC_EDIT_MEDIAN_FILCENY)->EnableWindow(FALSE);
  77. // 更新
  78. UpdateData(FALSE);
  79. }
  80. void CDlgMedian::OnRadioMedianVertical() 
  81. {
  82. // 3×1模板
  83. m_nFilterType   = 0;
  84. m_nFilterHeight = 3;
  85. m_nFilterWidth  = 1;
  86. m_nFilterCenX   = 0;
  87. m_nFilterCenY   = 1;
  88. // 设置文本框不可用
  89. (CEdit *) GetDlgItem(IDC_EDIT_MEDIAN_FILH)->EnableWindow(FALSE);
  90. (CEdit *) GetDlgItem(IDC_EDIT_MEDIAN_FILW)->EnableWindow(FALSE);
  91. (CEdit *) GetDlgItem(IDC_EDIT_MEDIAN_FILCENX)->EnableWindow(FALSE);
  92. (CEdit *) GetDlgItem(IDC_EDIT_MEDIAN_FILCENY)->EnableWindow(FALSE);
  93. // 更新
  94. UpdateData(FALSE);
  95. }
  96. void CDlgMedian::OnRadioMedianSelfdef() 
  97. {
  98. // 自定义模板
  99. (CEdit *) GetDlgItem(IDC_EDIT_MEDIAN_FILH)->EnableWindow(TRUE);
  100. (CEdit *) GetDlgItem(IDC_EDIT_MEDIAN_FILW)->EnableWindow(TRUE);
  101. (CEdit *) GetDlgItem(IDC_EDIT_MEDIAN_FILCENX)->EnableWindow(TRUE);
  102. (CEdit *) GetDlgItem(IDC_EDIT_MEDIAN_FILCENY)->EnableWindow(TRUE);
  103. }
  104. void CDlgMedian::OnOK() 
  105. {
  106. // 获取用户设置(更新)
  107. UpdateData(TRUE);
  108. // 判断设置是否有效
  109. if ((m_nFilterCenX < 0) || (m_nFilterCenX > m_nFilterWidth - 1) ||
  110. (m_nFilterCenY < 0) || (m_nFilterCenY > m_nFilterHeight - 1))
  111. {
  112. // 提示用户参数设置错误
  113. MessageBox("参数设置错误!", "系统提示" , MB_ICONINFORMATION | MB_OK);
  114. // 返回
  115. return;
  116. }
  117. CDialog::OnOK();
  118. }