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
{
};
c++绘图软件<一>的更多相关文章
- gnuplot: 一种更为简洁的曲线,柱状图绘图软件
gnuplot: 一种更为简洁的曲线,柱状图绘图软件 gnuplot: 一种更为简洁的曲线,柱状图绘图软件 Zhong Xiewei Wed Jun 25 gnuplot简单介绍 关于gnuplot的 ...
- Smartdraw世界上最流行的商业绘图软件
Smartdraw 更多图片(5张) SmartDraw是世界上最流行的商业绘图软件.2006 年获美国政府司法部 (U.S. Department of Justice) 专用软件,2007获美国政 ...
- 一款好用的绘图软件gnuplot
漂亮的图片在一篇报告中是必不可少的.这里推荐一款绘图软件Gnuplot. Gnuplot是一种免费分发的绘图工具,可以移植到各种主流平台,无论是在Linux还是在Windows都易于安装使用.最新的版 ...
- Ubuntu 16.04 安装GIMP绘图软件
Ubuntu上比较好用的绘图软件,GIMP,安装方法如下: 终端输入 : sudo apt-get install gimp ,回车,输入密码,即可安装简单易行. 输入 :gimp ,启动程序.
- Mac 设计师必备的设计绘图软件 推荐与下载
Mac设计师必备的设计绘图软件,为广大设计师推荐一些Mac上实用且强大的软件,使用好的软件,事半功倍,设计出精美的作品. Mac上优秀的设计类软件非常多,绝对不止这几款软件,看看以下内容,希望对你有帮 ...
- 化学绘图软件ChemDraw真的什么都能干!
今天要介绍的就是一款无所不能的化学绘图软件——ChemDraw,绘制平面化学结构.生成立体化学模型.查询化学信息.编写化学脚本.计算化学数据等等,堪称化学界的必备神器. 化学软件ChemDraw免费获 ...
- 使用wpaint绘图软件时:Uncaught DOMException: Failed to execute 'drawImage' on 'CanvasRenderingContext2D': The image argument is a canvas element with a width or height of 0.
使用wpaint绘图软件时:Uncaught DOMException: Failed to execute 'drawImage' on 'CanvasRenderingContext2D': Th ...
- AutoCAD 2019 for mac 非常好用的CAD三维设计绘图软件
macOS下用什么cad软件?mac在哪下载cad软件? AutoCAD 2019 for mac 是一款非常好用的CAD三维设计绘图软件,可应用三维建模.CAD.渲染.动画.视觉特效和数字图像. A ...
- 【优秀的设计绘图软件】Affinity Designer Beta for Mac 1.7
[简介] Affinity Designer 1.7 beta 中文版本,具有全新的UI界面和功能,支持最新的 macOS Mojave 10.14 系统,Affinity Designer是 ...
随机推荐
- js广告图片轮播
<div class="box"> <div class="box1"></div> <div class=" ...
- spring容器启动的加载过程(二)
第六步: public abstract class AbstractApplicationContext extends DefaultResourceLoader implements Confi ...
- tableview 代理方法详解
typedef NS_ENUM(NSInteger, UITableViewCellAccessoryType) { UITableViewCellAccessoryNone, // 不显示任何图标 ...
- tomcat安装完设定用户名和密码
vi conf/tomcat-user.xml<tomcat-users> <role rolename="manager"/> <role role ...
- Xib学习之(1)
刚学xib就遇到一个问题 最后还是朋友帮忙解决了 就是在设置约束时,设置的是左右约束为0,可是最后弄出来却是左右边界都空出来了16 解决办法: 具体原因应该是iOS8 之后UIView又多了个属性:l ...
- mysql5.7.16安装
系统:centOS6.5 mysql: 5.7.16 wget http://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.16-linux-glib ...
- perl 简单后门程序
#!/usr/bin/env perl use warnings; use strict; use Socket; my $HOST='localhost'; ; socket(S,PF_INET,S ...
- C++模板之类型与数据绑定
有时候我们需要将类型与一些数据进行绑定,例如我们一般通过单例,将字符串与一个函数关联(一般称之为注册),之后通过字符串创建相关联的对象 class A { public: static A* Crea ...
- html5 --基础笔记2
1.autocomplete 可以给表单本身(不是fieldset)设置属性来禁用整个表单的自动完成功能 <form id="" method="" au ...
- 如何对Site Settings页面进行定制化 添加一个setting 链接
下面在Site Settings页 >Site Administration里添加一个Ruby Setting 超链接,点击进入到rubySetting.aspx 1.在SharePoint p ...