zoukankan      html  css  js  c++  java
  • 几种画直线的方法-孙鑫C++笔记

    // HDC画直线
    CPoint m_ptOrigin ;
    void CDrawView::OnLButtonDown(UINT nFlags, CPoint point)
    {
      m_ptOrigin = point;
      CView::OnLButtonDown(nFlags, point);
    }
    void CDrawView::OnLButtonUp(UINT nFlags, CPoint point)
    {
      HDC hdc;
      hdc = ::GetDC(m_hWnd);
      MoveToEx(hdc, m_ptOrigin.x, m_ptOrigin.y, NULL);
      LineTo(hdc, point.x, point.y);
      ::ReleaseDC(m_hWnd, hdc);
    
      CView::OnLButtonUp(nFlags, point);
    }
    
    // CDC画直线
    void CDrawView::OnLButtonDown(UINT nFlags, CPoint point)
    {
      m_ptOrigin = point;
      CView::OnLButtonDown(nFlags, point);
    }
    void CDrawView::OnLButtonUp(UINT nFlags, CPoint point)
    {
      CDC *pDC = GetDC();
      pDC->MoveTo(m_ptOrigin);
      pDC->LineTo(point);
      ReleaseDC(pDC);
    
      CView::OnLButtonUp(nFlags, point);
    }
    
    // CClientDC、CWindowDC画直线
    void CDrawView::OnLButtonDown(UINT nFlags, CPoint point)
    {
      m_ptOrigin = point;
      CView::OnLButtonDown(nFlags, point);
    }
    void CDrawView::OnLButtonUp(UINT nFlags, CPoint point)
    {
      CClientDC dc(this);          //画到客户区
      CClientDC dc(GetParent());      //画到客户区+工具栏
      CWindowDC dc(this);          //画到客户区
      CWindowDC dc(GetParent());  //画到客户区+工具栏+菜单栏+标题栏
      CWindowDC dc(GetDesktopWindow());  //画到整个屏幕窗口
      dc.MoveTo(m_ptOrigin);
      dc.LineTo(point);
    
      CView::OnLButtonUp(nFlags, point);
    }
    
    //带颜色的直线
    void CDrawView::OnLButtonDown(UINT nFlags, CPoint point)
    {
      m_ptOrigin = point;
      CView::OnLButtonDown(nFlags, point);
    }
    void CDrawView::OnLButtonUp(UINT nFlags, CPoint point)
    {
      CPen pen(PS_SOLID, 1, RGB(255, 0, 0));
      CClientDC dc(this);
      CPen *pOldPen = dc.SelectObject(&pen);
      dc.MoveTo(m_ptOrigin);
      dc.LineTo(point);
      dc.SelectObject(pOldPen);
    
      CView::OnLButtonUp(nFlags, point);
    }
    
    //画刷
    void CDrawView::OnLButtonDown(UINT nFlags, CPoint point)
    {
      m_ptOrigin = point;
      CView::OnLButtonDown(nFlags, point);
    }
    void CDrawView::OnLButtonUp(UINT nFlags, CPoint point)
    {
      CBrush brush(RGB(255, 0, 0));
      CClientDC dc(this);
      dc.FillRect(CRect(m_ptOrigin, point), &brush);
    
      CView::OnLButtonUp(nFlags, point);
    }
    //位图画刷
    void CDrawView::OnLButtonDown(UINT nFlags, CPoint point)
    {
      m_ptOrigin = point;
      CView::OnLButtonDown(nFlags, point);
    }
    void CDrawView::OnLButtonUp(UINT nFlags, CPoint point)
    {
      CBitmap bitmap;
      bitmap.LoadBitmap(IDB_BITMAP1);
      CBrush brush(&bitmap);
      CClientDC dc(this);
      dc.FillRect(CRect(m_ptOrigin, point), &brush);
    
      CView::OnLButtonUp(nFlags, point);
    }
    //透明画刷
    void CDrawView::OnLButtonDown(UINT nFlags, CPoint point)
    {
      m_ptOrigin = point;
      CView::OnLButtonDown(nFlags, point);
    }
    void CDrawView::OnLButtonUp(UINT nFlags, CPoint point)
    {
      CClientDC dc(this);
      // dc.Rectangle(CRect(m_ptOrigin, point)); //不透明
      CBrush *pBrush = CBrush::FromHandle((HBRUSH)GetStockObject(NULL_BRUSH));
      CBrush *pOldBrush = dc.SelectObject(pBrush);
      dc.Rectangle(CRect(m_ptOrigin, point));
      dc.SelectObject(pOldBrush);    //透明
    
      CView::OnLButtonUp(nFlags, point);
    }
    //用画笔写字
    void CDrawView::OnLButtonDown(UINT nFlags, CPoint point)
    {
      m_ptOrigin = point;
      m_bDraw = TRUE;
      CView::OnLButtonDown(nFlags, point);
    }
    void CDrawView::OnLButtonUp(UINT nFlags, CPoint point)
    {
      m_bDraw = FALSE;
      CView::OnLButtonUp(nFlags, point);
    }
    void CDrawView::OnMouseMove(UINT nFlags, CPoint point)
    {
      CClientDC dc(this);
      CPen pen(PS_SOLID, 1, RGB(255, 0, 0));
      CPen *pOldPen = dc.SelectObject(&pen);
      if(m_bDraw == TRUE)
      {
        dc.MoveTo(m_ptOrigin);
        dc.LineTo(point);
        m_ptOrigin = point;
      }
      dc.SelectObject(pOldPen);
      
      CView::OnMouseMove(nFlags, point);
    }
    
    //画扇形
    CPoint m_ptOld;
    void CDrawView::OnLButtonDown(UINT nFlags, CPoint point)
    {
      m_ptOrigin = m_ptOld = point;
      m_bDraw = TRUE;
      CView::OnLButtonDown(nFlags, point);
    }
    void CDrawView::OnLButtonUp(UINT nFlags, CPoint point)
    {
      m_bDraw = FALSE;
      CView::OnLButtonUp(nFlags, point);
    }
    void CDrawView::OnMouseMove(UINT nFlags, CPoint point)
    {
      CClientDC dc(this);
      CPen pen(PS_SOLID, 1, RGB(255, 0, 0));
      CPen *pOldPen = dc.SelectObject(&pen);
      if(m_bDraw == TRUE)
      {
        dc.MoveTo(m_ptOrigin);
        dc.LineTo(m_ptOld);
        // dc.MoveTo(m_ptOrigin); // 不带边线
        dc.MoveTo(m_ptOld);    // 带边线
        dc.LineTo(point);
        m_ptOld = point;
      }
      dc.SelectObject(pOldPen);
    
      CView::OnMouseMove(nFlags, point);
    }
  • 相关阅读:
    Sql Serer 常用函数
    分享5个viewport相关的jQuery插件 java程序员
    struts2.xml中使用chain和redirectAction这两个类型结果(typeresult)时,报检查错误(validation) java程序员
    Android开发之Intent跳转到系统应用中的拨号界面、联系人界面、短信界面 java程序员
    详解struts2中struts.properties java程序员
    Struts2输入校验总结 java程序员
    struts.xml配置文件中result的语法:<result name="" type="">xxxxx</result> java程序员
    挺立在孤独,失败与屈辱的废墟上(俞敏洪) 读书心得 java程序员
    超棒的响应式jQuery网格布局插件 grida licious java程序员
    struts2国际化 java程序员
  • 原文地址:https://www.cnblogs.com/SnailProgramer/p/4298777.html
Copyright © 2011-2022 走看看