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


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章