- 1
- 0
- 约1.1万字
- 约 43页
- 2018-03-04 发布于浙江
- 举报
[计算机软件及应用]第21讲定义直线类和画笔的使用
VC++程序设计
——单文档应用程序的开发
第21讲 定义直线类和画笔的使用
2018-3-4
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
- [计算机软件及应用]法律常识.ppt
- [计算机软件及应用]汽车软件业务基本知识入门简介.ppt
- [计算机软件及应用]测绘《计算机高级语言C》复习思考题.doc
- [计算机软件及应用]正确使用合金辊环.ppt
- [计算机软件及应用]测控和技术仪器优秀毕业论文.doc
- [计算机软件及应用]测试入门.ppt
- [计算机软件及应用]注解.ppt
- [计算机软件及应用]测试基础cqw.ppt
- [计算机软件及应用]测试建设方案 - 20.doc
- 2025年全国演出经纪人员资格认定考试试卷带答案(研优卷).docx
- 2025年全国演出经纪人员资格认定考试试卷完整版.docx
- 2025年全国演出经纪人员资格认定考试试题库及完整答案.docx
- 2025年全国演出经纪人员资格认定考试试卷完美版.docx
- 2025年全国演出经纪人员资格认定考试试卷含答案(实用).docx
- 2025年全国演出经纪人员资格认定考试试卷及答案(各地真题).docx
- 2025年下半年内江市部分事业单位公开考试招聘工作人员(240人)备考题库附答案.docx
- 2025年全国演出经纪人员资格认定考试试卷及答案1套.docx
- 2025年下半年四川成都市郫都区面向社会引进公共类事业单位人员2人备考题库最新.docx
- 2025年下半年内江市部分事业单位公开考试招聘工作人员(240人)备考题库附答案.docx
最近下载
- 2021届高考物理三轮冲刺重难点训练:磁场(解析版).pdf VIP
- IDC数据时代2025白皮书_数据时代2025资源The Digitization of the World From Edge to Core.pdf VIP
- 《民航服务心理学(第2版)》项目二(改).pptx
- 民航服务心理学(第2版)严光玉课后习题答案.pdf VIP
- 《民航服务心理学(第2版)》课程标准.docx VIP
- 高考物理压轴题.pdf VIP
- 【高考真题】2023年新高考物理真题试卷——湖南卷(含答案).pdf VIP
- 欧洲规范-NF P18-561-中文版.pdf VIP
- 调相机系统构成及原理培训教材(课件49张).ppt VIP
- 2024届浙江省杭州市高考一轮复习培优提升卷(一)语文试卷含答案.docx VIP
原创力文档

文档评论(0)