<menu id="w8yyk"><menu id="w8yyk"></menu></menu>
  • <dd id="w8yyk"><nav id="w8yyk"></nav></dd>
    <menu id="w8yyk"></menu>
    <menu id="w8yyk"><code id="w8yyk"></code></menu>
    <menu id="w8yyk"></menu>
    <xmp id="w8yyk">
    <xmp id="w8yyk"><nav id="w8yyk"></nav>
  • 網站首頁 > 物聯資訊 > 技術分享

    VC,一條會被鼠標移動的直線

    2016-09-28 00:00:00 廣州睿豐德信息科技有限公司 閱讀
    睿豐德科技 專注RFID識別技術和條碼識別技術與管理軟件的集成項目。質量追溯系統、MES系統、金蝶與條碼系統對接、用友與條碼系統對接

                             RFID設備管理軟件

                                            對話框中的小紅線可以被移動的

     

    一、類名是 CBinarizationDlg

    二、定義兩個變量
    BOOL m_flag;
    int nPos;

    在構造函數初始化m_flag = false;nPos=256;
    三、響應消息函數三個
    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.left+5,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 x=0 ; x<256; x++)
    {
    memDC.MoveTo(2*x+rect.left+5,ybase);
    memDC.LineTo(2*x+rect.left+5, (int)(ybase-pDoc->m_hgray[x]*yratio));
    }

    memDC.SelectObject(pOldPen);
    }else{
    pDoc->m_hmax=pDoc->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.left+5) && (nPos < rect.right-5) )
    {
    memDC.MoveTo(nPos,rect.bottom-5);
    memDC.LineTo(nPos,rect.top+4);
    }
    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控件的ID,visible = false,這個只是用來輔助定位的咚咚咚

    提問的帖子:http://topic.csdn.net/u/20111001/17/952edd78-cb91-48c8-861f-0eeebf81d75d.html

    RFID管理系統集成商 RFID中間件 條碼系統中間層 物聯網軟件集成
    最近免费观看高清韩国日本大全