广州哪家网站建设公司好,怎么才能免费建网站,wordpress qq相册,泾阳网站建设对话框中的小红线可以被移动的 一、类名是 CBinarizationDlg
二、定义两个变量 BOOL m_flag; int nPos; 在构造函数初始化m_flag false;nPos256; 三、响应消息函数三个 afx_msg void OnPaint(); afx_msg void OnLButtonDown(UINT nFlags, CPoint point); afx_msg void OnLBut… 对话框中的小红线可以被移动的 一、类名是 CBinarizationDlg
二、定义两个变量 BOOL m_flag; int nPos; 在构造函数初始化m_flag false;nPos256; 三、响应消息函数三个 afx_msg void OnPaint(); afx_msg void OnLButtonDown(UINT nFlags, CPoint point); afx_msg void OnLButtonUp(UINT nFlags, CPoint point); afx_msg void OnMouseMove(UINT nFlags, CPoint point); 四、代码加注释 void CBinarizationDlg::OnPaint() { CPaintDC dc(this); // device context for painting CPhotoMeterDoc* pDoc (CPhotoMeterDoc*) ((CMainFrame*)AfxGetMainWnd())-GetActiveFrame()-GetActiveDocument(); CRect rect; //GetDlgItem(IDC_STATIC_HISTO)-GetWindowRect(rect); //ScreenToClient(rect); GetDlgItem(IDC_STATIC_HISTO)-GetClientRect(rect); int width rect.Width(); int height rect.Height(); // Create a memory CDC CDC memDC; memDC.CreateCompatibleDC( dc ); CBitmap bitmap; bitmap.CreateCompatibleBitmap( dc, width, height ); CBitmap* oldbitmap memDC.SelectObject( bitmap ); memDC.FillSolidRect( rect, RGB( 255, 255, 255 ) ); CPen axisPen(PS_SOLID,1,RGB(0,0,0)); CPen* pOldPen dc.SelectObject(axisPen); memDC.MoveTo(rect.left5,rect.bottom-4); memDC.LineTo(rect.right-5,rect.bottom-4); memDC.SelectObject(pOldPen); // The frame CBrush brh(RGB(0,0,0)); memDC.FrameRect(rect,brh); //histogram if (pDoc pDoc-image) { if (pDoc-m_hmax){ int ybase rect.bottom-5; float yratio (ybase - rect.top)/(float)pDoc-m_hmax; CPen grayPen(PS_SOLID, 1, RGB(84, 64, 64)); pOldPen memDC.SelectObject(grayPen); //调整的界面刚好使rect.right-rect.left-10是512即中间横线为512 for (int x0 ; x256; x) { memDC.MoveTo(2*xrect.left5,ybase); memDC.LineTo(2*xrect.left5, (int)(ybase-pDoc-m_hgray[x]*yratio)); } memDC.SelectObject(pOldPen); }else{ pDoc-m_hmaxpDoc-GetImage()-Histogram(pDoc-m_hr,pDoc-m_hg,pDoc-m_hb,pDoc-m_hgray); if (pDoc-m_hmax) Invalidate(); } }//end of histogram CPen redpen(PS_SOLID,0, RGB(222,0,0)); pOldPen memDC.SelectObject(redpen); if ((nPos rect.left5) (nPos rect.right-5) ) { memDC.MoveTo(nPos,rect.bottom-5); memDC.LineTo(nPos,rect.top4); } memDC.SelectObject(pOldPen); dc.BitBlt( 10, 10, width, height, memDC, 0, 0, SRCCOPY ); memDC.SelectObject( oldbitmap ); } void CBinarizationDlg::OnLButtonDown(UINT nFlags, CPoint point) { CRect rect; GetDlgItem(IDC_STATIC_HISTO)-GetClientRect(rect); rect.left 5; rect.right -5; rect.bottom 5; point.Offset(-10,-10); if (rect.PtInRect(point) (nPos point.x)) { m_flag TRUE; nPos point.x ; } CDialog::OnLButtonDown(nFlags, point); } void CBinarizationDlg::OnLButtonUp(UINT nFlags, CPoint point) { m_flag FALSE; Invalidate(FALSE); CDialog::OnLButtonUp(nFlags, point); } void CBinarizationDlg::OnMouseMove(UINT nFlags, CPoint point) { //CDC *pDC this-GetDC(); CRect rect; GetDlgItem(IDC_STATIC_HISTO)-GetClientRect(rect); rect.left 5; rect.right -5; rect.bottom 5; point.Offset(-10,-10); if (m_flag rect.PtInRect(point)) { nPos point.x; Invalidate(FALSE); } CDialog::OnMouseMove(nFlags, point); //ReleaseDC(pDC); }
说明IDC_STATIC_HISTO是一个picture控件的IDvisible false这个只是用来辅助定位的咚咚咚
提问的帖子http://topic.csdn.net/u/20111001/17/952edd78-cb91-48c8-861f-0eeebf81d75d.html