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;//
    }

  • 相关阅读:
    ubuntu 10.04 修改双系统默认启动项
    ubuntu 系统目录结构
    在ubuntu 下搭建 android开发环境
    android 开发包的离线安装方式
    wget 下载ftp整个目录
    Lambda复合条件以及获得EntityFramework 运行后生成的sql 命令
    解决jquery 的datepicker 的本地化以及Today问题
    ubuntu ssh 登录慢问题
    android监控上传小demo之第三步 相片的提交
    临时转mysql编码解决乱码问题
  • 原文地址:https://www.cnblogs.com/lizhengjin/p/1289266.html
Copyright © 2011-2022 走看看