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


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