- 1、本文档共43页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
VC++程序设计
——单文档应用程序的开发
第21讲 定义直线类和画笔的使用
2017-5-27
2
本讲主要内容
定义直线类
画笔的使用
3
11.2.2 定义直线类
直线是非封闭图形,根据11.1.3节的设计,直线类CLine派生自线型类CLineType。
和其他的图元类一样,直线类CLine除了具有其基类CLineType定义的属性和行为外,还具有自己的属性和行为,如线段起点、线段终点和“绘制直线”的行为等。
4
【例11-3】
【例11-3】 在例11-2程序的基础上,为绘图程序MyDrawSystem增加直线类的定义,将所绘直线保存到一个合适的动态数据结构中。在重绘窗口时能够显示已经绘制的直线图形。
5
【例11-3】
【编程步骤】
(1)选择Insert|New Class命令,打开New Class对话框,在ClassType中选择“Generic Class”,在Name编辑框中键入“CLine”,在Base Class(es)框中,用鼠标左键单击“Derived From”下面的高亮区,键入“CLineType”。
点击OK,将弹出一个消息框,直接点击“确定”,即生成CLine类的两个支持文件。
6
【例11-3】
(2)为CLine类定义成员变量和成员函数。包括类型为CPoint的、表示直线段的起点和终点的成员变量m_Begin和m_End。另外直线类有“画线”的动作,要增加一个成员函数Draw(),功能是将直线画出来。
考虑到绘图系统中的每种图形都有“绘制”的动作,因此把这个新的成员函数Draw()定义在直线类的父类CLineType中。但由于在CLineType类中该成员函数无法具体定义,因此将其定义为纯虚函数,表明CLineType类是抽象类。
直线类继承下来之后,Draw()函数的功能是根据m_Begin和m_End两点画一条直线。
7
【例11-3】
在LineType.h中添加代码如下。
class CLineType : public CObject
{ ……
public:
……
virtual void Draw(CDC* pDC)=0;
//纯虚函数——画图函数
};
8
【例11-3】
在Line.h中添加代码如下。
#include LineType.h
class CLine : public CLineType
{
protected:
CPoint m_Begin,m_End; //直线的起点和终点
public:
CLine();
CLine(CPoint begin, CPoint end, int linewidth=1,
int linetype=PS_SOLID,
COLORREF linecolor=RGB(0,0,0));
virtual ~CLine();
void Draw (CDC *pDC);
};
9
【例11-3】
在Line.cpp中添加代码如下。
CLine::CLine()
{
m_Begin.x=m_Begin.y=0;
m_End.x=m_End.y=0;
}
CLine::CLine(CPoint begin, CPoint end, int linewidth, int linetype, COLORREF linecolor):CLineType(linewidth,linetype,linecolor)
{
m_Begin = begin;
m_End = end;
}
10
【例11-3】
CLine::~CLine()
{}
void CLine::Draw (CDC *pDC) //绘制直线段的成员函数
{
pDC-MoveTo(m_Begin);
pDC-LineTo(m_End);
}
11
【例11-3】
(3)重新整理一下菜单命令响应函数。因为“绘图”菜单下有许多绘制不同图形的命令,单击某个命令后就要根据所要绘制的图形来编写鼠标响应函数,这样在鼠标响应函数中需要判断哪个菜单命令被点击了。
为此,在视图类中添加一个成员变量m_nFigureType,点击不同的菜单项即在菜单响应函数中为其赋一个不同的整数值,用于代表所绘的图元类型。代码如下。
12
【例11-3】
class CMyDrawSystemView : public CView
{
protected: // create from serialization only
……
int m_nFigureType;
您可能关注的文档
- 第1讲绪论电路基础.ppt
- 第1讲金融市场概论.ppt
- 第1课《夏朝和商朝》课件.ppt
- 第1课中华人民共和国成立.ppt
- 第1课中国早期政治制度的特点 (2).ppt
- 第1课从内外服联盟到封邦建国 (2).ppt
- 第1课发达的古代农业 (2).ppt
- 第1课地球仪的基本知识.ppt
- 第1课夏商制度与西周分封.ppt
- 第1课夏商周的政治制度.ppt
- 2025年市总工会党组书记、市委组织部部长生活会“四个带头”个人对照检查发言材料2篇(含上年度整改+个人情况、个人事项+典型案例).docx
- 2025年部编版小学六年级下册《道德与法治》第四单元 让世界更美好第10课 我们爱和平教学课件.pptx
- 公司领导班子2025年围绕“四个带头”主题检视问题整改落实方案与组织生活会批评意见(20条)2篇文.docx
- 教育系统党组班子2025年对照“四个带头”含意识形态、以典型案例举一反三解析检视材料【2篇文】.docx
- 2025年国有企业领导班子、学校副校长生活会“四个带头”方面对照个人检视发言材料2篇文(附:上年度整改情况、典型案例解析).docx
- 2025年生活会“四个带头”个人对照检查材料2篇文(含对其他领导批评意见,个人公开事项申报、意识形态).docx
- 2025年国有企业党委书记、领导班子生活会“四个带头”方面对照检查发言材料2篇文(上年度整改情况).docx
- 乡镇领导班子、市委组织部常务副部长2025年对照“四个带头”含违纪行为为典型案例的剖析与反思检视剖析材料{2篇文}.docx
- 市委社会工作部2025年生活会领导班子对照检视发言材料2篇文(含以案为鉴,深刻反思存在问题、反面典型案例举一反三解析、其他需要说明情况).docx
- 2025年民主生活会、组织生活会批评意见(20条)与市直单位领导班子“四个带头”对照检查材料【含上年度查摆问题整改落实情况】2篇文.docx
文档评论(0)