欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    c++课程设计-交互式绘图软件设计指导书(共34页).doc

    • 资源ID:13940978       资源大小:1.23MB        全文页数:34页
    • 资源格式: DOC        下载积分:20金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要20金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    c++课程设计-交互式绘图软件设计指导书(共34页).doc

    精选优质文档-倾情为你奉上C+面向对象程序设计课程设计指导书指导实例:交互式绘图软件设计指导书说明:1.本实例软件经设计实作,为可实际运行的软件。指导书中所列程序代码,均为VC+6.0编程环境中可运行代码复制所得,所列示图,均为制作过程中屏幕截图,其目的是使学习者尽快弄清设计原理,掌握过程、方法,起到举一反三、正真领会面向对象程序设计的思想方法,原理,和操作技能的作用。使用中,“1.设计原理”(第3页),供系统设计分析用,实际操作可从“2.操作过程与步骤”(第6页)开始。2.其余推荐题目,可根据自身实际情况,酌情参考使用。1.设计原理面向对象的程序设计是现在最外流行的程序设计方法。面向对象的方法模仿人们建立现实世界模型的方法,认为客观世界是由各种各样的对象组成的,每个对象都有各自的内部状态和运动规律,不同对象之间的相互作用和联系就构成了各种各样的系统。利用人们对事物分类和抽象的自然倾向,引进了类的概念,具有封装性、继承性和多态性等特点。面向对象的程序设计吸取了传统的结构化程序设计的优点,采用数据抽象和信息隐藏技术、将数据与操作封装在一起,用类来抽象代表现实的实体,用类之间的继承关系来代表设计的抽象过程,将问题求解看作是一个非类演绎过程。1.1 类与数据封装在C+中,类是指由用户定义的一种抽象数据类型,将一组具有相关性的数据成员结合在一起,要使用类中所包含的数据时,必须通过有该类所提供的成员函数来存取。数据封装是指将类中的数据成员以其可被使用或不可被使用的方式进行分类,即有条件地限制类中部分或全部的数据成员被使用,在定义数据成员时在其前面冠以private、protected或public,分别表示私有的、保护的和公有的。因此,类是实现数据封装的一个有力方法,类的特性是实现了数据封装或数据抽象。在本设计中,可以把各种图形形状,如直线、矩形、圆、曲线、多边形等定义为各种各样的图形类,将图的具体绘制、存储操作和属性设置定义为图形类的public成员函数,这样就实现了类与数据封装。例如,直线类可以定义为:class Clineprivate:COLORREF m_color;/直线的颜色int m_lineWidth, m_lineStyle;/直线的线宽和直线的线型POINT m_beginPoint, m_endPoint;/直线的起点和终点public:COLORREF getColor();/返回直线的颜色void setColor(COLORREF color);/设置直线的颜色int getLineStyle();/返回直线的线型void setLingStyle(UINT style);/设置直线的线型int getLineWidth();/返回直线的线宽void setLineWidth(int width);/设置直线的线宽POINT getBeginPoint();/返回直线的起点POINT getEndPoint();/返回直线的终点void Draw(CDC *pDC);/直线的具体绘制void Serialize(CArchive &ar);;1.2 派生类与继承性在C+中,派生类和继承性是指用户可以利用已有的类(称为基类或父类)定义出新的类(派生类或子类),派生类中不但拥有基类中的全部或部分数据成员与成员函数,而且还可以定义新的数据成员与成员函数。在本设计中,要绘制的图形形状很多,如直线、矩形、圆、曲线、多边形等。虽然图形的形状差别很大,其数据成员和成员函数也有许多不同之处,但是如果从抽象的角度出发,它们有些数据成员和成员函数是相同的,如颜色、线型、线宽属性以及设置或获取这些属性的成员函数,因此可以把这些共同点定义为一个基类CShape,然后从CShape类派生出直线类、矩形类、圆类、曲线类、多边形类等,这样,每个派生类都继承有这些共同点,又可以定义自己独特的数据成员和成员函数,程序结构更加简练合理。CShape类的定义如下:class CShapeprotected:COLORREF m_color;/颜色int m_lineWidth, m_lineStyle;/线宽和线型public:virtual COLORREF getColor();/返回颜色virtual void setColor(COLORREF color);/设置颜色 virtual int getLineStyle();/返回线型virtual int setLineStyle(int style);/设置线型virtual int getLineWidth();/返回线宽virtual void setLineWidth(int width);/设置线宽virtual void Draw(CDC *pDC);/绘图virtual void Serialize(Carchive &ar);/存储操作;而CLine类派生于CShape类,定义如下:class CLine: public CShapeprivate:POINT m_beginPoint, m_endPoint;/直线的起点和终点public:POINT getBeginPoint();/返回直线的起点POINT getEndPoint();/返回直线的终点void Draw(CDC *pDC);/直线的具体绘制void Serialize(Carchive &ar);/直线的具体存储操作;1.3 虚函数与多态性在面向对象中,多态性是指一个名字有多种含义,或相同界面有多种实现。在继承体系中,如果在派生类中对所继承的成员函数重新定义其功能,该函数应在基类中被定义为虚函数,在成员函数定义时在其前面加上关键字virtual。C+系统能自动判别应该调用哪一个类对象的成员函数。因此,虚函数是一种单界面多实现版本的方法,即函数名、返回类型、参数类型和个数及顺序完全相同,但函数体内容可以完全不同。在本设计中,可以把抽象的图形基类CShape的绘图操作Draw定义为虚函数,直线、矩形、圆、曲线、多边形等作为CShape的派生类,把它们的具体绘图操作定义在各自类中,保留其函数原型(函数名、返回值类型、参数个数及类型、顺序)都不变,然后用指向基类CShape的指针来调用Draw函数,就可以实现虚函数与多态性,即同样的调用语句因指针所指向的对象不同而画出不同的图像。如下所示:CShape *pShape;/定义指向基类CShape的指针pShapeCLine line;/定义一个直线类的对象linepShape=&line;/将line的地址赋给pShapepShape->Draw(pDC);/绘制直线Crectangle rect;/定义一个矩形类的对象rectpShape=&rect;/将CRectangle的地址赋给pShapepShape->Draw(pDC);/绘制矩形CCircle circle ;/定义一个圆对象circlepShape=&circle;/将circle的地址赋给pShapepShape->Draw(pDC);/绘制圆可见,同样的语句“pShape->Draw(pDC);”,却能绘制出不同的图形,这就是虚函数与多态性的功能特点。1.4 数据存储与屏幕重绘绘图程序Draw要求能用鼠标在屏幕上绘制直线、贝济埃曲线、圆、椭圆、矩形、多边形等基本二维图形,并提供相应的文件保存和屏幕重绘功能。二维图形包括许多种类型,用于表征这些二维图形对象的数据是不同的,它们都有颜色、线型和线宽3个属性数据,但它们的几何数据不同,点用一个坐标点数据表示,直线、圆、椭圆和矩形用两个坐标点数据表示,圆角矩形用两个坐标点数据和两个整型数据来表示,圆弧或椭圆弧、饼图或扇形用4个坐标点数据表示,贝济埃曲线用4个以上的坐标点数据表示,而多边形所需的坐标点数据个数是任意的。另外,对于封闭图形,还可以有填充与不填充选择,若填充,还可以选择颜色、影线和图案3种模式之一。因此,如何实现对这些具有不同数据类型和个数图形对象的保存,以及如何根据保存的数据区别不同图形对象并进行屏幕重绘,是本设计要解决的关键问题。从MFC的文档/视图结构可知,应用程序的数据保存专门由文档类的Serialize函数负责具体完成,应用程序的数据显示或屏幕重绘专门由视图类的OnDraw函数负责具体完成。如果在二维图形基类CShape定义中把负责数据保存的成员函数Serialize和负责图形绘制的成员函数Drawing说明为虚函数,在派生类即具体的二维图形类定义中只对Serialize和Drawing的函数内容重新定义,保留其函数名、返回值类型和参数(包括类型和个数)不变,用一个指向基类CShape的指针访问虚函数Serialize和Drawing,就可以实现画图程序具有不同数据类型和个数的二维图形对象的保存,以及根据保存的数据区别不同图形对象在屏幕上重新绘制出来。在MFC类库中,集合类是专门用于数据保存的。集合类又分为数组类、链表类和映射类(也称数据字典类)。它们都能适用于各种数据类型,如BYTE、WORD、int、float、String、对象地址或对象指针等。从前面的分析可以看出,在画图程序中需要保存的数据是各二维图形对象的地址,因此可以选用数组类的CObArray/CPtrArray或链表类的CObList/CPtrList。在MFC中,数组是采用动态数组,链表是采用双向链表。数组和链表对存取数据的操作各有优缺点。在本设计中,可以简单地选用CObArray来存放二维图形对象的地址。1.5 设计思路综上所述,可以总结设计思路如下:首先定义一个二维图形的基类CShape,它包含颜色、线型和线宽3个共有的数据成员,定义串行化Serialize和绘图Drawing两个虚函数,然后从CShape类派生上述各二维图形类:CLine、CCircle、CEllipse、CRectangle、CBezier和CPolygon等,在每一个二维图形类中定义自己的几何数据,定义构造函数以便生产各自的图形对象,重载Serialize和Drawing函数,以实现各自不同的数据序列化和屏幕重绘。其次,在文档类中定义一个可以保存各二维图形对象地址的CObArray数组,并定义3个操作该CObArray数组的文档类成员函数AddShape、GetShape、GetShapeNumber。视图类是使用这些函数的重要用户。在文档类的Serialize函数中简单地调用CObArray.Serialize函数,而CObArray的Serialize函数又依据所存放的对象指针类型调用相应类对象的Serialize函数,完成实际的数据读写操作,从而实现了二维图形对象不同数据类型和个数的序列化。再次,在用鼠标进行屏幕绘图的鼠标消息处理函数代码中,在OnLButtonUp函数内,对不同的二维图形对象,分别调用各自的构造函数生成二维图形对象,再把该二维图形对象地址用AddShape函数保存在CObArray数组中,以矩形为例,如下所示:if(CurrentDraw= =DRAW_RECTANGLE)pShape=new CRectangle(m_pOrigin, point, m_pWidth, m_pStyle, m_pColor); /其他二维对象的相应语句段pDoc->AddShape(pShape);其中,pDoc为指向文档的指针;m_pWidth、m_pStyle和m_pColor为视图类的数据成员,分别代表二维图形的线宽、线型和颜色。最后,在OnDraw成员函数中定义一个基类CShape的指针变量pShape,采用循环方法遍历CObArray数组中的所有元素,在for循环内把调用GetShape函数获得的二维图形对象的地址赋给pShape,用pShape调用虚函数Drawing,就可以实现虚函数的多态性,即相同的pShape->Drawing(pDC)函数调用语句,由于pShape所指向的对象不同,实现了调用不同Drawing函数体内容的目的。从而在屏幕上绘出不同的二维图形。实现不同二维图形对象的数据保存和屏幕重绘的过程可以概括为:在视图类中利用鼠标消息处理函数用鼠标绘出二维图形,获得数据;调用各自的构造函数生成二维图形对象,调用AddShape函数把二维图形对象的地址保存在CObArray数组中;在OnDraw函数中,调用GetShape函数从CObArray数组中获得二维图形对象的地址,并赋给基类的指针变量pShape,用pShape调用Drawing虚函数,实现了不同二维图形对象的屏幕重绘;由于CObArray数组本身具有数据序列化功能,因此在文档类的Serialize函数中只需加入对CObArray的Serialize函数的两次调用,即可实现不同图形对象的保存。2. 设计过程与步骤具体的设计过程,可按下列步骤进行。2.1建立绘图程序框架本设计的第一步是使用MFC AppWizard来建立绘图程序的基本框架,步骤为:(1)从File菜单选择New菜单项,弹出New对话框。(2)选择Projects选项卡,从项目类型表框中选择MFC AppWizard(exe),在Project name文本框中输入绘图程序的名字,这里设定为Draw,其他采用默认值。(3)单击OK按钮,弹出MFC AppWizard-Step 1对话框,选中Single document单选按钮和“中文中国”选项,表示要生成以中文为用户界面的单文档(SDI)绘图程序。(4)单击Next按钮,在图2.4所示的MFC AppWizard-Step 6对话框中,单击CDrawView,在Base class的下拉列表框中选择CScrollView,使视图窗口具有滚动功能。(5)单击Finish按钮,表示使用随后的各项默认设置,再单击OK按钮,MFC AppWizard自动生成绘图程序的各项源文件。为了使绘图区(视图客户区)出现水平和垂直滚动条,必须知道图形的总尺寸。为此,需要修改视图类的OnInitiaUpdate函数的内容,将原来的语句:sizeTotal.cx=sizeTotal.cy=100;修改为:sizeTotal.cx=640; sizeTotal.cy=480;其他内容保留不变。AppWizard自动生成了完整的应用程序的基本框架,可以立即选择Build菜单中的Execute Draw.exe菜单项,Visual C+首先进行编译和链接,然后运行该应用程序,可以看到该程序是一个标准的Win32应用程序,它包含有标题、菜单栏、工具栏和状态栏,许多命令都可以操作了。当然,因为还没有给这个程序添加任何自己的代码,所以它还不能做出任何有实际意义的操作。2.2 图形类的定义按照前面分析的设计思路,要定义一个二维图形的基类CShape,它包含颜色、线型和线宽3个共有的数据成员,定义串行化Serialize和绘图Drawing两个虚函数,然后从CShape类派生各类二维图形类:CLine、CBezier、CRect、CEllipse和CPolygon,在每一个二维图形类中定义自己的几何数据,定义构造函数以便生成各自的图像对象,重载Serialize和Drawing函数,以实现各自不同的数据序列化和屏幕重绘。为了把新定义的图形类单独存放在一个头文件中,在Draw项目已打开的情况下,选择Project Add To Project New命令,在随之弹出的New对话框的Files选项卡中,选择C/C+ Header File,在File文本框中输入新类CShape的头文件名shape,最后单击OK按钮即可。Visual C+关闭New对话框,并在用户工作区中打开一个空白窗口,让用户进行新类的定义。重复上述步骤,但在New对话框的Files选项卡中,选择C+ Source File,以便生成一个空白的实现文件。然后将下面7个类的定义代码放到shape.h文件中,把它们的实现代码放到shape.cpp文件中,并在shape.cpp文件的开头加入下列两行:#include “stdafx.h”#include “shape.h”最后在DrawDoc.h文件开头加入对shape.h的包含语句:#include “shape.h”2.2.1 图形基类CShape1. CShape定义代码class CShape:public CObjectprotected:COLORREF m_pColor;int m_pWidth, m_pStyle;CShape()DECLARE_SERIAL(CShape)public:virtual void Drawing(CDC *pDC)virtual void Serialize(CArchive &ar);2.CShape类实现代码IMPLEMENT_SERIAL(CShape, CObject, 1)void CShape:Serialize(CArchive &ar)if(ar.IsStoring()ar<<m_pColor<<m_pWidth<<m_pStyle;elsear>>m_pColor>>m_pWidth>>m_pStyle;2.2.2 直线类CLine1. CLine类定义代码class CLine:public CShapeprotected:POINT m_pStart, m_pEnd;CLine()DECLARE_SERIAL(CLine)public:CLine(POINT pStart, POINT pEnd, int Width, int Style, COLORREF color);void Drawing(CDC *pDC);virtual void Serialize(CArchive &ar);2. CLine类实现代码IMPLEMENT_SERIAL(CLine, CShape, 1)CLine:CLine(POINT pStart, POINT pEnd, int Width, int Style, COLORREF Color)m_pStart=pStart; m_pEnd=pEnd;m_pWidth=Width; m_pStyle=Style; m_pColor=Color;void CLine:Drawing(CDC *pDC)CPen NewPen, *pOldPen;NewPen.CreatePen(m_pStyle, m_pWidth, m_pColor);pOldPen=pDC->SelectObject(&NewPen);pDC->MoveTo(m_pStart); pDC->LineTo(m_pEnd);pDC->SelectObject(pOldPen);void CLine:Serialize(CArchive &ar)if(ar.IsStoring()ar<<m_pStart.x<<m_pStart.y<<m_pEnd.x<<m_pEnd.y;elsear>>m_pStart.x>>m_pStart.y>>m_pEnd.x>>m_pEnd.y;CShape:Serialize(ar);2.2.3 贝济埃曲线类CBezier1. CBezier类定义代码class CBezier:public CShapeprotected:POINT m_pPoints20;int m_pNum;CBezier()DECLARE_SERIAL(CBezier)public:CBezier(POINT points20, int n, int Width, int Style, COLORREF color);void Drawing(CDC *pDC);virtual void Serialize(CArchive &ar);2. CBezier类实现代码IMPLEMENT_SERIAL(CBezier, CShape, 1)CBezier:CBezier(POINT points20, int n, int Width, int Style, COLORREF Color)m_pNum=n;for(int i=0; i<n; i+)m_pPointsi=pointsi;m_pWidth=Width; m_pStyle=Style; m_pColor=Color;void CBezier:Drawing(CDC *pDC)CPen NewPen, *pOldPen;NewPen.CreatePen(m_pStyle, m_pWidth, m_pColor);pOldPen=pDC->SelectObject(&NewPen);pDC->PolyBezier(m_pPoints, m_pNum);pDC->SelectObject(pOldPen);void CBezier:Serialize(CArchive &ar)int i;if(ar.IsStoring()ar<<m_pNum;for(i=0; i<m_pNum; i+) ar<<m_pPointsi;elsear>>m_pNum;for(i=0; i<m_pNum; i+) ar>>m_pPointsi;CShape:Serialize(ar);2.2.4 矩形类CRectangle1. CRectangle类定义代码class CRectangle:public CShapeprotected:POINT m_pFP, m_pSP;COLORREF m_FColor;int m_FFlag, m_HFlag, m_pHatch;CRectangle()DECLARE_SERIAL(CRectangle)public:CRectangle(POINT pFP, POINT pSP, int Width, int Style, COLORREF Color,int m_FFlag, COLORREF FColor, int HFlag, int pHatch);void Drawing(CDC *pDC);virtual void Serialize(CArchive &ar);2. CRectangle类实现代码IMPLEMENT_SERIAL(CRectangle, CShape, 1)CRectangle:CRectangle(POINT pFP, POINT pSP, int Width, int Style, COLORREF Color, int FFlag, COLORREF FColor, int HFlag, int pHatch)m_pFP=pFP; m_pSP=pSP;m_pWidth=Width; m_pStyle=Style; m_pColor=Color;m_FFlag=FFlag; m_FColor=FColor;m_HFlag=HFlag; m_pHatch=pHatch;void CRectangle:Drawing(CDC *pDC)CPen NewPen, *pOldPen;NewPen.CreatePen(m_pStyle, m_pWidth, m_pColor);pOldPen=pDC->SelectObject(&NewPen);pDC->SelectStockObject(NULL_BRUSH);CBrush NewBrush, *pOldBrush;if(m_FFlag)if(m_HFlag=0)NewBrush.CreateSolidBrush(m_FColor);elseNewBrush.CreateHatchBrush(m_pHatch, m_FColor);pOldBrush=pDC->SelectObject(&NewBrush);pDC->Rectangle(m_pFP.x, m_pFP.y, m_pSP.x, m_pSP.y);pDC->SelectObject(pOldPen);if(m_FFlag) pDC->SelectObject(pOldBrush);void CRectangle:Serialize(CArchive &ar)if(ar.IsStoring()ar<<m_pFP.x<<m_pFP.y<<m_pSP.x<<m_pSP.y<<m_FFlag<<m_FColor<<m_HFlag<<m_pHatch;elsear>>m_pFP.x>>m_pFP.y>>m_pSP.x>>m_pSP.y>>m_FFlag>>m_FColor>>m_HFlag>>m_pHatch;CShape:Serialize(ar);2.2.5 圆类CCircle1. CCircle类定义代码class CCircle: public CShapeprotected:POINT m_pFP, m_pSP;COLORREF m_FColor;int m_FFlag, m_HFlag, m_HPattern;CCircle()DECLARE_SERIAL(CCircle)public:CCircle(POINT pFP, POINT pSP, int Width, int Style, COLORREF Color, int m_FFlag, COLORREF FColor, int HFlag, int HPattern);void Drawing(CDC *pDC);virtual void Serialize(CArchive &ar);void VCCircle(CDC *pDC);2. CCircle类实现代码IMPLEMENT_SERIAL(CCircle, CShape, 1)CCircle:CCircle(POINT pFP, POINT pSP, int Width, int Style, COLORREF Color, int FFlag, COLORREF FColor, int HFlag, int HPattern)m_pFP=pFP; m_pSP=pSP;m_pWidth=Width; m_pStyle=Style; m_pColor=Color;m_FFlag=FFlag; m_FColor=FColor;m_HFlag=HFlag; m_HPattern=HPattern;void CCircle:Drawing(CDC *pDC)CPen NewPen, *pOldPen;NewPen.CreatePen(m_pStyle, m_pWidth, m_pColor);pOldPen=pDC->SelectObject(&NewPen);pDC->SelectStockObject(NULL_BRUSH);CBrush NewBrush, *pOldBrush;if(m_FFlag)if(m_HFlag=0)NewBrush.CreateSolidBrush(m_FColor);elseNewBrush.CreateHatchBrush(m_HPattern, m_FColor);pOldBrush=pDC->SelectObject(&NewBrush);pDC->Ellipse(m_pFP.x, m_pFP.y, m_pSP.x, m_pSP.y);pDC->SelectObject(pOldPen);if(m_FFlag) pDC->SelectObject(pOldBrush);void CCircle:VCCircle(CDC *pDC) CPen NewPen,*pOldPen;NewPen.CreatePen(m_pStyle,m_pWidth,m_pColor);pOldPen=pDC->SelectObject(&NewPen); pDC->SelectStockObject(NULL_BRUSH); CBrush NewBrush,*pOldBrush; if(m_FFlag)if(m_HFlag=0)NewBrush.CreateSolidBrush(m_FColor); else NewBrush.CreateHatchBrush(m_HPattern,m_FColor); pOldBrush=pDC->SelectObject(&NewBrush);pDC->Ellipse(m_pFP.x,m_pFP.y,m_pSP.x,m_pSP.y); pDC->SelectObject(pOldPen); if(m_FFlag)pDC->SelectObject(pOldBrush);void CCircle:Serialize(CArchive &ar)if(ar.IsStoring()ar<<m_pFP.x<<m_pFP.y<<m_pSP.x<<m_pSP.y<<m_FFlag<<m_FColor<<m_HFlag<<m_HPattern;elsear>>m_pFP.x>>m_pFP.y>>m_pSP.x>>m_pSP.y>>m_FFlag>>m_pColor>>m_HFlag>>m_HPattern;CShape:Serialize(ar);2.2.6 椭圆类CEllipse1. CEllipse类定义代码class CEllipse: public CShapeprotected:POINT m_pFP, m_pSP;COLORREF m_FColor;int m_FFlag, m_HFlag, m_pHatch;CEllipse()DECLARE_SERIAL(CEllipse)public:CEllipse(POINT pFP, POINT pSP, int Width, int Style, COLORREF Color,int m_FFlag, COLORREF FColor, int HFlag, int pHatch);void Drawing(CDC *pDC);virtual void Serialize(CArchive &ar);2. CEllipse类实现代码IMPLEMENT_SERIAL(CEllipse, CShape, 1)CEllipse:CEllipse(POINT pFP, POINT pSP, int Width, int Style, COLORREF Color, int FFlag, COLORREF FColor, int HFlag, int pHatch)m_pFP=pFP; m_pSP=pSP;m_pWidth=Width; m_pStyle=Style; m_pColor=Color;m_FFlag=FFlag; m_FColor=FColor;m_HFlag=HFlag; m_pHatch=pHatch;void CEllipse:Drawing(CDC *pDC)CPen NewPen, *pOldPen;NewPen.CreatePen(m_pStyle, m_pWidth, m_pColor);pOldPen=pDC->SelectObject(&NewPen);pDC->SelectStockObject(NULL_BRUSH);CBrush NewBrush, *pOldBrush;if(m_FFlag)if(m_HFlag=0)NewBrush.CreateSolidBrush(m_FColor);elseNewBrush.CreateHatchBrush(m_pHatch, m_FColor);pOldBrush=pDC->SelectObject(&NewBrush);pDC->Ellipse(m_pFP.x, m_pFP.y, m_pSP.x, m_pSP.y);pDC->SelectObject(pOldPen);if(m_FFlag) pDC->SelectObject(pOldBrush);void CEllipse:Serialize(CArchive &ar)if(ar.IsStoring()ar<<m_pFP.x<<m_pFP.y<<m_pSP.x<<m_pSP.y<<m_FFlag<<m_FColor<<m_HFlag<<m_pHatch;elsear>>m_pFP.x>>m_pFP.y>>m_pSP.x>>m_pSP.y>>m_FFlag>>m_FColor>>m_HFlag>>m_pHatch;CShape:S

    注意事项

    本文(c++课程设计-交互式绘图软件设计指导书(共34页).doc)为本站会员(飞****2)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

    本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

    工信部备案号:黑ICP备15003705号 © 2020-2023 www.taowenge.com 淘文阁 

    收起
    展开