AdjustColorDlg.cpp
上传用户:hstieta88
上传日期:2007-01-14
资源大小:106k
文件大小:6k
源码类别:

图形图像处理

开发平台:

Visual C++

  1. // AdjustColorDlg.cpp : implementation file
  2. //
  3. #include "stdafx.h"
  4. #include "Dib.h"
  5. #include "ColorProcess.h"
  6. #include "AdjustColorDlg.h"
  7. #ifdef _DEBUG
  8. #define new DEBUG_NEW
  9. #undef THIS_FILE
  10. static char THIS_FILE[] = __FILE__;
  11. #endif
  12. /////////////////////////////////////////////////////////////////////////////
  13. // CAdjustColorDlg dialog
  14. CAdjustColorDlg::CAdjustColorDlg(CWnd* pParent /*=NULL*/)
  15. : CDialog(CAdjustColorDlg::IDD, pParent)
  16. {
  17. //{{AFX_DATA_INIT(CAdjustColorDlg)
  18. m_strValue1 = _T("0");
  19. m_strValue2 = _T("0");
  20. m_strValue3 = _T("0");
  21. m_strName1 = _T("R");
  22. m_strName2 = _T("G");
  23. m_strName3 = _T("B");
  24. //}}AFX_DATA_INIT
  25. m_nColorModel = RGB_COLOR;
  26. m_nValue1 = 0;
  27. m_nValue2 = 0;
  28. m_nValue3 = 0;
  29. }
  30. void CAdjustColorDlg::DoDataExchange(CDataExchange* pDX)
  31. {
  32. CDialog::DoDataExchange(pDX);
  33. //{{AFX_DATA_MAP(CAdjustColorDlg)
  34. DDX_Control(pDX, IDC_SCROLLBAR2, m_ScrollBar2);
  35. DDX_Control(pDX, IDC_SCROLLBAR3, m_ScrollBar3);
  36. DDX_Control(pDX, IDC_SCROLLBAR1, m_ScrollBar1);
  37. DDX_Text(pDX, IDC_VALUE1, m_strValue1);
  38. DDX_Text(pDX, IDC_VALUE2, m_strValue2);
  39. DDX_Text(pDX, IDC_VALUE3, m_strValue3);
  40. DDX_Text(pDX, IDC_NAME1, m_strName1);
  41. DDX_Text(pDX, IDC_NAME2, m_strName2);
  42. DDX_Text(pDX, IDC_NAME3, m_strName3);
  43. //}}AFX_DATA_MAP
  44. }
  45. BEGIN_MESSAGE_MAP(CAdjustColorDlg, CDialog)
  46. //{{AFX_MSG_MAP(CAdjustColorDlg)
  47. ON_BN_CLICKED(IDC_RADIO1, OnRadio1)
  48. ON_BN_CLICKED(IDC_RADIO2, OnRadio2)
  49. ON_BN_CLICKED(IDC_RADIO3, OnRadio3)
  50. ON_WM_HSCROLL()
  51. ON_BN_CLICKED(IDC_RADIO4, OnRadio4)
  52. //}}AFX_MSG_MAP
  53. END_MESSAGE_MAP()
  54. /////////////////////////////////////////////////////////////////////////////
  55. // CAdjustColorDlg message handlers
  56. BOOL CAdjustColorDlg::OnInitDialog() 
  57. {
  58. CDialog::OnInitDialog();
  59. ((CButton *)GetDlgItem(IDC_RADIO1))->SetCheck(1);
  60. m_ScrollBar1.SetScrollRange(-255,255);
  61. m_ScrollBar2.SetScrollRange(-255,255);
  62. m_ScrollBar3.SetScrollRange(-255,255);
  63. m_ScrollBar1.SetScrollPos(m_nValue1);
  64. m_ScrollBar2.SetScrollPos(m_nValue2);
  65. m_ScrollBar3.SetScrollPos(m_nValue3);
  66. return TRUE;  // return TRUE unless you set the focus to a control
  67.               // EXCEPTION: OCX Property Pages should return FALSE
  68. }
  69. void CAdjustColorDlg::OnRadio1() 
  70. {
  71. m_nColorModel = RGB_COLOR;
  72. m_strName1 = "R";
  73. m_strName2 = "G";
  74. m_strName3 = "B";
  75. m_strValue1 = "0";
  76. m_strValue2 = "0";
  77. m_strValue3 = "0";
  78. m_nValue1 = 0;
  79. m_nValue2 = 0;
  80. m_nValue3 = 0;
  81. UpdateData(FALSE);
  82. m_ScrollBar1.SetScrollRange(-255,255);
  83. m_ScrollBar2.SetScrollRange(-255,255);
  84. m_ScrollBar3.SetScrollRange(-255,255);
  85. m_ScrollBar1.SetScrollPos(m_nValue1);
  86. m_ScrollBar2.SetScrollPos(m_nValue2);
  87. m_ScrollBar3.SetScrollPos(m_nValue3);
  88. }
  89. void CAdjustColorDlg::OnRadio2() 
  90. {
  91. m_nColorModel = HSI_COLOR;
  92. m_strName1 = "H";
  93. m_strName2 = "S";
  94. m_strName3 = "I";
  95. m_strValue1 = "0";
  96. m_strValue2 = "0";
  97. m_strValue3 = "0";
  98. m_nValue1 = 0;
  99. m_nValue2 = 0;
  100. m_nValue3 = 0;
  101. UpdateData(FALSE);
  102. m_ScrollBar1.SetScrollRange(-180,180);
  103. m_ScrollBar2.SetScrollRange(-275,275);
  104. m_ScrollBar3.SetScrollRange(-442,442);
  105. m_ScrollBar1.SetScrollPos(m_nValue1);
  106. m_ScrollBar2.SetScrollPos(m_nValue2);
  107. m_ScrollBar3.SetScrollPos(m_nValue3);
  108. }
  109. void CAdjustColorDlg::OnRadio3() 
  110. {
  111. m_nColorModel = HLS_COLOR;
  112. m_strName1 = "H";
  113. m_strName2 = "L";
  114. m_strName3 = "S";
  115. m_strValue1 = "0";
  116. m_strValue2 = "0";
  117. m_strValue3 = "0";
  118. m_nValue1 = 0;
  119. m_nValue2 = 0;
  120. m_nValue3 = 0;
  121. UpdateData(FALSE);
  122. m_ScrollBar1.SetScrollRange(-180,180);
  123. m_ScrollBar2.SetScrollRange(-100,100);
  124. m_ScrollBar3.SetScrollRange(-100,100);
  125. m_ScrollBar1.SetScrollPos(m_nValue1);
  126. m_ScrollBar2.SetScrollPos(m_nValue2);
  127. m_ScrollBar3.SetScrollPos(m_nValue3);
  128. }
  129. void CAdjustColorDlg::OnRadio4() 
  130. {
  131. m_nColorModel = CMYK_COLOR;
  132. m_strName1 = "C";
  133. m_strName2 = "M";
  134. m_strName3 = "Y";
  135. m_strValue1 = "0";
  136. m_strValue2 = "0";
  137. m_strValue3 = "0";
  138. m_nValue1 = 0;
  139. m_nValue2 = 0;
  140. m_nValue3 = 0;
  141. UpdateData(FALSE);
  142. m_ScrollBar1.SetScrollRange(-255,255);
  143. m_ScrollBar2.SetScrollRange(-255,255);
  144. m_ScrollBar3.SetScrollRange(-255,255);
  145. m_ScrollBar1.SetScrollPos(m_nValue1);
  146. m_ScrollBar2.SetScrollPos(m_nValue2);
  147. m_ScrollBar3.SetScrollPos(m_nValue3);
  148. }
  149. void CAdjustColorDlg::OnOK() 
  150. {
  151. // TODO: Add extra validation here
  152. CDialog::OnOK();
  153. }
  154. void CAdjustColorDlg::OnHScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar)
  155. {
  156. char str[64];
  157. int nV, nMin, nMax;
  158. pScrollBar->GetScrollRange(&nMin, &nMax);
  159. if (pScrollBar->m_hWnd == m_ScrollBar1.m_hWnd)
  160. nV = m_nValue1;
  161. else if (pScrollBar->m_hWnd == m_ScrollBar2.m_hWnd)
  162. nV = m_nValue2;
  163. else if (pScrollBar->m_hWnd == m_ScrollBar3.m_hWnd)
  164. nV = m_nValue3;
  165. switch (nSBCode)
  166. {
  167. case SB_LEFT:
  168. nV = nMin;
  169. break;
  170. case SB_RIGHT:
  171. nV = nMax;
  172. break;
  173. case SB_LINELEFT:
  174. nV--;
  175. break;
  176. case SB_LINERIGHT:
  177. nV++;
  178. break;
  179. case SB_PAGELEFT:
  180. nV -= 20*nMax/100;
  181. break;
  182. case SB_PAGERIGHT:
  183. nV += 20*nMax/100;
  184. break;
  185. case SB_THUMBPOSITION:
  186. case SB_THUMBTRACK:
  187. nV = nPos;
  188. break;
  189. }
  190. nV = BOUND(nV, nMin, nMax);
  191. pScrollBar->SetScrollPos(nV);
  192. if (pScrollBar->m_hWnd == m_ScrollBar1.m_hWnd)
  193. {
  194. itoa(nV, str, 10);
  195. m_strValue1 = str;
  196. m_nValue1 = nV;
  197. }
  198. else if (pScrollBar->m_hWnd == m_ScrollBar2.m_hWnd)
  199. {
  200. itoa(nV, str, 10);
  201. m_strValue2 = str;
  202. m_nValue2 = nV;
  203. }
  204. else if (pScrollBar->m_hWnd == m_ScrollBar3.m_hWnd)
  205. {
  206. itoa(nV, str, 10);
  207. m_strValue3 = str;
  208. m_nValue3 = nV;
  209. }
  210. UpdateData(FALSE);
  211. CDialog::OnHScroll(nSBCode, nPos, pScrollBar);
  212. }