zoukankan      html  css  js  c++  java
  • (7)一步一步开发一个CAD之对实体集及选择集进行删除,捡选

    上一步开发了对实体和选择集进行操作的类后,再实现捡选,删除就很简单了

    删除图形只要把图形从选择集中删掉就可以了

    (1)选择

    class CSelect : public CComand
    {
    public:
     CSelect();
     virtual ~CSelect();
    public:
     void OnLButtonDown(UINT nFlags,  CPosition pos);
        void OnMouseMove(UINT nFlags,  CPosition pos);
    private:
     CHandleCG* m_hand;
     
    };

    CSelect::CSelect()
    {
     m_hand = new CHandleCG(&g_pDoc->m_solid, &g_pDoc->m_select);
    }

    void CSelect::OnLButtonDown(UINT nFlags,  CPosition pos)
    {
        m_hand->AddSelect();
    }

    void CSelect::OnMouseMove(UINT nFlags,  CPosition pos)
    {
        CDC *pDC = g_pView->GetDC();
        float dis = PICK_RADIU * ( g_pView->m_scale );
     m_hand->DrawSelect(pDC, pos, dis, Normal, Select);
    }

    CSelect::~CSelect()
    {

     delete m_hand;//
    }

    (2)取消选择

    class CUnSelect : public CComand
    {
    public:
     CUnSelect();
     virtual ~CUnSelect();
    public:
     void OnLButtonDown(UINT nFlags,  CPosition pos);
        void OnMouseMove(UINT nFlags,  CPosition pos);
    private:
     CHandleCG* m_hand;
     
    };

    CUnSelect::CUnSelect()
    {
     m_hand = new CHandleCG(&g_pDoc->m_select, &g_pDoc->m_solid);
    }

    void CUnSelect::OnLButtonDown(UINT nFlags,  CPosition pos)
    {
        m_hand->AddSelect();
    }

    void CUnSelect::OnMouseMove(UINT nFlags,  CPosition pos)
    {
        CDC *pDC = g_pView->GetDC();
        float dis = PICK_RADIU * ( g_pView->m_scale );
     m_hand->DrawSelect(pDC, pos, dis, Select, Normal);
     g_pView->ReleaseDC(pDC);
    }

    CUnSelect::~CUnSelect()
    {

     delete m_hand;//
    }

    (3)删除

    class CDelete : public CComand
    {
    public:
     CDelete();
     virtual ~CDelete();
    public:
     void OnLButtonDown(UINT nFlags,  CPosition pos);
        void OnMouseMove(UINT nFlags,  CPosition pos);
    private:
     CHandleCG* m_hand;
     
    };

    CDelete::CDelete()
    {
     m_hand = new CHandleCG(&g_pDoc->m_select, &g_pDoc->m_solid);
    }
    void CDelete::OnLButtonDown(UINT nFlags,  CPosition pos)//删除实体并重画
    {  
     CDC *pDC = g_pView->GetDC();
        m_hand->DeleteSolid(pDC);
     g_pView->ReleaseDC(pDC);
    }

    void CDelete::OnMouseMove(UINT nFlags,  CPosition pos)//移动监测选中的实体
    {
        CDC *pDC = g_pView->GetDC();
        float dis = PICK_RADIU * ( g_pView->m_scale );
     m_hand->DrawSelect(pDC, pos, dis, Select, Normal);
     g_pView->ReleaseDC(pDC);
    }

    CDelete::~CDelete()
    {

     delete m_hand;//
    }

  • 相关阅读:
    排序去重
    $(...)[0].attr is not a function问题
    daterangepicker的汉化和简单使用
    wx.openSetting的调整
    css3中-moz、-ms、-webkit与盒子模型
    动态翻滚的导航条
    CSS3 transition 浏览器兼容性
    jq实现两个input输入同时不为空时,改变确认框背景颜色
    js 监听input 实现数据绑定
    关于html 修改滚动条的问题
  • 原文地址:https://www.cnblogs.com/lizhengjin/p/1289266.html
Copyright © 2011-2022 走看看