CImageViewDlg.cpp 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143
  1. // CImageViewDlg.cpp: 实现文件
  2. //
  3. #include "pch.h"
  4. #include "resource.h"
  5. #include "CImageViewDlg.h"
  6. #include "afxdialogex.h"
  7. // CImageViewDlg 对话框
  8. IMPLEMENT_DYNAMIC(CImageViewDlg, CDialogEx)
  9. CImageViewDlg::CImageViewDlg(CWnd* pParent /*=nullptr*/)
  10. : CDialogEx(IDD_CImageViewDlg, pParent)
  11. {
  12. m_pImageView = nullptr;
  13. m_bBtnVisable = false;
  14. m_bStrFlag = FALSE;
  15. m_strNote = "";
  16. }
  17. CImageViewDlg::~CImageViewDlg()
  18. {
  19. }
  20. BOOL CImageViewDlg::OnInitDialog()
  21. {
  22. CDialogEx::OnInitDialog();
  23. m_pImageView = new CImageView();
  24. m_pImageView->SubclassDlgItem(IDC_STATIC_IMG, this);
  25. m_pImageView->SetImageData(m_pdata, m_nwidth, m_nheight, 16);
  26. CString strShow;
  27. strShow.Format("%d", ShowAllAverage(m_pdata, m_nwidth, m_nheight));
  28. m_editAllAverage.SetWindowText(strShow);
  29. if (m_bStrFlag)
  30. {
  31. m_static_errornote.SetWindowText(m_strNote);
  32. m_btn_Accept.EnableWindow(FALSE);
  33. }
  34. else
  35. {
  36. m_strNote.Format("DV is Advisable");
  37. m_static_errornote.SetWindowText(m_strNote);
  38. }
  39. if (!m_bBtnVisable)
  40. {
  41. CString strclose = "close";
  42. m_btn_Accept.SetWindowText(strclose);
  43. m_btn_Reject.ShowWindow(SW_HIDE);
  44. m_static_errornote.ShowWindow(SW_HIDE);
  45. }
  46. m_bBtnVisable = true;
  47. return TRUE;
  48. }
  49. void CImageViewDlg::DoDataExchange(CDataExchange* pDX)
  50. {
  51. CDialogEx::DoDataExchange(pDX);
  52. DDX_Control(pDX, IDC_EDIT_ALL_AVERAGE, m_editAllAverage);
  53. DDX_Control(pDX, IDC_EDIT_ROI_AVERAGE, m_edtROIAverage);
  54. DDX_Control(pDX, IDC_STATIC_ERRORNOTE, m_static_errornote);
  55. DDX_Control(pDX, IDC_BUTTON_ACCEPT, m_btn_Accept);
  56. DDX_Control(pDX, IDC_BUTTON_REJECT, m_btn_Reject);
  57. }
  58. BEGIN_MESSAGE_MAP(CImageViewDlg, CDialogEx)
  59. ON_MESSAGE(MSG_RETANGE, UpDataAverage)
  60. ON_BN_CLICKED(IDC_BUTTON_ACCEPT, &CImageViewDlg::OnBnClickedButtonAccept)
  61. ON_BN_CLICKED(IDC_BUTTON_REJECT, &CImageViewDlg::OnBnClickedButtonReject)
  62. END_MESSAGE_MAP()
  63. // CImageViewDlg 消息处理程序
  64. LRESULT CImageViewDlg::UpDataAverage(WPARAM wParam, LPARAM lParam)
  65. {
  66. CString strShow;
  67. strShow.Format("%d", *(int*)lParam);
  68. m_edtROIAverage.SetWindowText(strShow);
  69. return 0;
  70. }
  71. int CImageViewDlg::ShowAllAverage(unsigned short* data, int width, int height)
  72. {
  73. int all = width * height;
  74. double total = 0;
  75. for (int i = 0; i < all; ++i)
  76. {
  77. total += (data[i]);
  78. }
  79. return total / all;
  80. }
  81. int CImageViewDlg::ShowROIAverage(unsigned short* data, int width, int height, int left, int top, int right, int bottom)
  82. {
  83. int average = 0;
  84. double total = 0;
  85. int count = 0;
  86. for (int i = top; i < bottom; ++i)
  87. {
  88. for (int j = left; j < right; ++j)
  89. {
  90. total += data[i * width + j];
  91. count++;
  92. }
  93. }
  94. average = total / count;
  95. return average;
  96. }
  97. void CImageViewDlg::SetBtnVisable(bool bVisable)
  98. {
  99. m_bBtnVisable = bVisable;
  100. }
  101. void CImageViewDlg::OnBnClickedButtonAccept()
  102. {
  103. if (m_pImageView)
  104. {
  105. delete m_pImageView;
  106. m_pImageView = NULL;
  107. }
  108. delete[] m_pdata;
  109. m_pdata = NULL;
  110. CDialog::OnOK();
  111. }
  112. void CImageViewDlg::OnBnClickedButtonReject()
  113. {
  114. if (m_pImageView)
  115. {
  116. delete m_pImageView;
  117. m_pImageView = NULL;
  118. }
  119. CDialog::OnCancel();
  120. }