c++绘图软件<一>
2014-05-11 15:48
225 查看
准备写一个绘图软件,参考了三层架构(表现层、业务逻辑层、数据访问层)。
////////////////////////////////////////////////////////////////////////// // 类说明: // 实体图元抽象基类,其派生类只存储数据和进行必要的数据维护,类似于 // 数据类,其他工作例如:绘画、序列化等由其他类进行处理。 ////////////////////////////////////////////////////////////////////////// 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 { };
相关文章推荐
- 短信猫软件的实现(C#)<一>熟悉串口
- 软件开发学习笔记 <一> UML
- C/C++版数据结构之链表<一>
- C++ 总结笔记 <一>
- C++ 之网络编程<一>
- 开始系统的学习C++ 之 C++学习笔记<一>
- C++直接初始化与复制初始化<一>
- c++ 实现顺序栈类(初始化,入栈,退栈。读栈顶元素以及顺序输出栈顶指针与栈中的元素<<计算机软件技术基础 徐士良>>
- C/C++版数据结构之树<一>
- 在Matlab中调用C/C++程序<一>
- Android NDK学习 <一> C++ 支持
- Android读取txt信息思路及Demo<软件工程作业一>
- C/C++版数据结构之链表<一>
- C/C++版数据结构之树<一>
- C++领域回调函数总结<一> ---- 常见使用
- 短信猫软件的实现(C#)<一>熟悉串口
- C++领域回调函数总结<一> ---- 常见使用
- CentOS安装软件<一> MYSQL
- 从c到c++<一>
- C++对象模型<一>