zoukankan      html  css  js  c++  java
  • c++绘图软件<一>

    准备写一个绘图软件,参考了三层架构(表现层、业务逻辑层、数据访问层)。

    //////////////////////////////////////////////////////////////////////////
    //	类说明:
    //		实体图元抽象基类,其派生类只存储数据和进行必要的数据维护,类似于
    //		数据类,其他工作例如:绘画、序列化等由其他类进行处理。
    //////////////////////////////////////////////////////////////////////////
    class IShape : public IEntity
    {
    };
    
    //////////////////////////////////////////////////////////////////////////
    //	线图元
    //////////////////////////////////////////////////////////////////////////
    class CLine : public IShape
    {
    };
    
    //////////////////////////////////////////////////////////////////////////
    //	矩形图元
    //////////////////////////////////////////////////////////////////////////
    class CRectangle : public IShape
    {
    };


     

    //////////////////////////////////////////////////////////////////////////
    //	类说明:
    //		图元控制类
    //		有很多时候我们会碰到这个问题,灯泡是一个实体类,他自己维护了必要
    //		的数据,并提供了一些基本操作,如:开灯/关灯。但是这个灯泡由谁来安装
    //		呢?一般来说是人,人可以做很事情,这样人就成为了上帝类,难以维护,
    //		所以引进了图元控制类,用来管理多个对象和处理一些不属于实体类的操作。
    //////////////////////////////////////////////////////////////////////////
    class CControlShape
    {
    };
    
    //////////////////////////////////////////////////////////////////////////
    //	类说明:
    //		线控制类
    //////////////////////////////////////////////////////////////////////////
    class CControlLine : public CControlShape
    {
    };

     

     

    //////////////////////////////////////////////////////////////////////////
    //	类说明:
    //		绘图抽象基类,从实体图元类对象中获取数据进行显示,其他具体绘画类都
    //		有此基类派生
    //////////////////////////////////////////////////////////////////////////
    class IDrawShape
    {
    };
    
    //GDI绘画抽象基类
    class IGdiDrawShape : public IDrawShape
    {
    };
    
    //GDI画线
    class CGdiDrawLine : public IGdiDrawShape
    {
    };
    //GDI画矩形
    class CGdiDrawRectangle : public IGdiDrawShape
    {
    };


    //////////////////////////////////////////////////////////////////////////
    //	类说明:
    //		实体工厂类,用户将一个枚举类型标示(实体类型,存储与IEntity中,每个
    //		实体存储的值都不一样),与一个创建函数关联起来,例如:我们可以通过实体
    //		类型,来创建与此想关联的对象
    //////////////////////////////////////////////////////////////////////////
    class CEntityFactory
    {
    };
    //暂时拥有两个实体工厂对象。
    //1、用于通过实体类型来创建图元。
    //2、用于通过实体类型来创建相关联的绘画对象。


    //////////////////////////////////////////////////////////////////////////
    //	类说明:
    //		管理所有对象的绘画
    //	参数说明:
    //		T,绘画基类,不能为IDrawShape
    //		DeviceContext,绘画设备上下文
    //	示例:
    //		CEntityFactory entiryDrawMap;
    //		CDrawShapeManage<IGdiDrawShape, Gdiplus::Graphics> drawManage;
    //		Gdiplus::Graphics g;
    //
    //		注册实体与绘画对象之间的映射关系
    //		RegisterEntityDrawMap<IGdiDrawShape>(&entiryDrawMap);
    //		设置实体绘画映射
    //		drawManage.SetEntityDrawMap(&entiryDrawMap);
    //		创建绘画对象,并关联实体(绘画对象通过实体指针获取实体数据)
    //		drawManage.RelationDrawEntity(&controlManage);
    //		//进行绘画
    //		drawManage.Draw(&g);
    //////////////////////////////////////////////////////////////////////////
    template<typename T, typename DeviceContext>
    class CDrawShapeManage
    {
    }:
    


     

    //////////////////////////////////////////////////////////////////////////
    //	tool抽象基类,用来完成特定的鼠标操作。
    //////////////////////////////////////////////////////////////////////////
    class ITool
    {
    };
    
    //////////////////////////////////////////////////////////////////////////
    //	类说明:
    //		选择工具,选择对象,使用鼠标操作对象。
    //////////////////////////////////////////////////////////////////////////
    class CSelectTool : public ITool
    {
    };
    
    //////////////////////////////////////////////////////////////////////////
    //	类说明:
    //		添加线工具,使用鼠标添加线。
    //////////////////////////////////////////////////////////////////////////
    class CAddLineTool : public ITool
    {
    };


  • 相关阅读:
    js中split()和join()的用法
    事件监听
    行内元素和块级元素
    parseInt()详解
    进制的转换
    什么叫优雅降级和渐进增强?
    js延迟加载的方式有哪些?
    javascript作用域和作用域链
    函数的原型对象和原型链?
    Tensorflow知识点学习
  • 原文地址:https://www.cnblogs.com/dongc/p/5225123.html
Copyright © 2011-2022 走看看