画出红色矩形框(还需修改)

来源:互联网 发布:s1810打印机网络设置 编辑:程序博客网 时间:2024/06/10 06:27

void CVIDEO::OnLButtonDown(UINT nFlags, CPoint point)
{
 // TODO: 在此添加消息处理程序代码和/或调用默认值
 CMainFrame* pMainFrm = (CMainFrame *)AfxGetApp()->GetMainWnd();

 ClientToScreen(&point);
 CRect rect;
 GetDlgItem(IDC_STATIC1)->GetClientRect(rect);
 GetDlgItem(IDC_STATIC1)->ClientToScreen(rect);

 if ((pMainFrm->IsAviFile||pMainFrm->IsCamera)&&rect.PtInRect(point))
 {
  startPoint=point;
  endPoint=point;
  selection=cvRect(point.x,point.y,0,0);
  drawingflag=TRUE;
  if (playflag) KillTimer(1); 
 }
 CFormView::OnLButtonDown(nFlags, point);
}

void CVIDEO::OnMouseMove(UINT nFlags, CPoint point)
{
 // TODO: 在此添加消息处理程序代码和/或调用默认值
 if (!drawingflag)  
  return;   
 CClientDC   dc(this);  
 dc.DPtoLP(&point); //映射每个点的坐标,或大小的尺寸,到GDI的逻辑坐标系统的设备坐标系统。
 dc.SelectStockObject(NULL_BRUSH);   

 CPen pen, *oldPen;
 pen.CreatePen(PS_SOLID,1,RGB(255,0,0)); 
 oldPen =dc.SelectObject(&pen); 

 dc.SetROP2(R2_NOT);


 dc.MoveTo(startPoint);
 dc.LineTo(startPoint.x,endPoint.y);
 dc.MoveTo(startPoint.x,endPoint.y);
 dc.LineTo(endPoint);
 dc.MoveTo(endPoint);
 dc.LineTo(endPoint.x,startPoint.y);
 dc.MoveTo(endPoint.x,startPoint.y);
 dc.LineTo(startPoint);

 endPoint=point;
 dc.MoveTo(startPoint);
 dc.LineTo(startPoint.x,endPoint.y);
 dc.MoveTo(startPoint.x,endPoint.y);
 dc.LineTo(endPoint);
 dc.MoveTo(endPoint);
 dc.LineTo(endPoint.x,startPoint.y);
 dc.MoveTo(endPoint.x,startPoint.y);
 dc.LineTo(startPoint);

 dc.SelectObject(oldPen);
 
 CFormView::OnMouseMove(nFlags, point);
}

void CVIDEO::OnLButtonUp(UINT nFlags, CPoint point)
{
 // TODO: 在此添加消息处理程序代码和/或调用默认值
 if (drawingflag)  
 {
  drawingflag=false;   

  CClientDC   dc(this);   
  dc.DPtoLP(&point);   
  dc.SelectStockObject(NULL_BRUSH);   

  CPen pen, *oldPen; 
  pen.CreatePen(PS_SOLID,1,RGB(255,0,0)); 
  oldPen =dc.SelectObject(&pen); 

  dc.SetROP2( R2_COPYPEN );  
  dc.MoveTo(startPoint);
  dc.LineTo(startPoint.x,endPoint.y);
  dc.MoveTo(startPoint.x,endPoint.y);
  dc.LineTo(endPoint);
  dc.MoveTo(endPoint);
  dc.LineTo(endPoint.x,startPoint.y);
  dc.MoveTo(endPoint.x,startPoint.y);
  dc.LineTo(startPoint);

  dc.SelectObject(oldPen);

  selection.width=abs(point.x-selection.x);
  selection.height=abs(point.y-selection.y);
  selectionflag=-1;
  if(playflag) SetTimer(1,m_fps,NULL);
 }
 
 CFormView::OnLButtonUp(nFlags, point);
}