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


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值