论文无忧网提供:计算机毕业论文范文|计算机毕业设计|计算机毕业论文
栏目导航 ASP Java Web .NET VB6.0 JAVA VC VF DELPHI PB 计算机网络 计算机科学与技术 PHP 安卓APP 其他 C# 代写论文
当前位置: > 计算机 > 计算机科学与技术 >

一种矢量图形工具(论文+程序)

管理矢量图形系统图形数据的方法即文档管理机制。在本设计的开发中,采用一套完全面向对象的文档组织机制。这种机制就是通过图形元素类创建很多图形元素对象,每个图形元素对象作为一个整体来组织存储空间的分配、存取等各种管理功能。然后通过建立一种存储机制,来管理指向所有图形元素对象的指针,达到管理所有图形元素对象的目的。这种文档管理机制具有组织简单、结构化和移植性好,以及比较容易利用VC++程序设计语言的开发功能等优点。缺点是需要较大的内存空间。 paper51.com

管理一个矢量图形系统文档的思路是:每个图形元素是图形元素类创建的一个对象,在创建这个对象时得到指向这个对象的指针,建立一个对象指针数组来管理这些指针,以达到管理所有图形元素对象的目的。 内容来自论文无忧网 www.paper51.com

在VC++下可以较容易地实现对指向图形元素对象的指针的组织和管理。在MFC中有一个类模班CTypedPtrArray,可以用它来创建一个管理类指针的对象。例如,可以定义一个管理CLine类指针的对象如下: 内容来自论文无忧网 www.paper51.com

CTypedPtrArray<CObArray,Cline*>m_LineArray;

copyright paper51.com

其他各图形类的管理类指针对象和Cline类指针的对象类似:

copyright paper51.com

CTypedPtrArray<CObArray,CCircle*>m_CircleArray; 内容来自论文无忧网 www.paper51.com

CTypedPtrArray<CObArray,CArc*>m_ArcArray;

paper51.com

CTypedPtrArray<CObArray,CText*>m_TextArray; 内容来自论文无忧网 www.paper51.com

CTypedPtrArray<CObArray,CPline*>m_PLineArray; 内容来自www.paper51.com

CTypedPtrArray<CObArray,CPlineRgn*>m_PLineRgnArray; http://www.paper51.com

2)      增加图形元素 copyright paper51.com

在应用程序Draw中增加一个图形元素对象(如一条直线)时,需要进行以下两个步骤的操作: copyright paper51.com

①创建一个图形元素对象,并用图形元素的实际数据初始化这个图形元素对象。如增加一条直线时,需要创建一个CLine对象,并用这条直线的实际数据(起终点、所在图层、颜色等)初始化这个CLine对象的成员变量。 http://www.paper51.com

②把指向新创建的图形元素对象的指针,增加到文档类中管理图形元素对象指针的对象中。如增加一条CLine对象后,需要把指向这个CLine对象的指针增加到文档类的m_LineArray对象中。

内容来自论文无忧网 www.paper51.com

为了实现增加各类图形元素的功能,在文档类CDrawDoc 中定义几个函数,分别来完成增加各类图形元素的操作功能 内容来自www.paper51.com

CLine* AddLine(short ColorPen,shortColorBrush,float LineWide,short LineType,short Layer,int id_only,float X1,floatY1,float X2,float Y2); http://www.paper51.com

CCircle* AddCircle(short ColorPen,shortColorBrush,float LineWide,short LineType,short Layer,int id_only,floatCircleX,float CircleY,float CircleR,BOOL bFill);

copyright paper51.com

CArc* AddArc(short ColorPen,shortColorBrush,float LineWide,short LineType,short Layer,int id_only,floatCircleX,float CircleY,float CircleR,float Angle1,float Angle2);

内容来自www.paper51.com

CText* AddText(short ColorPen,shortColorBrush,float LineWide,short LineType,short Layer,int id_only,floatStartX,float StartY,float Angle1,float Angle2,float TextHeight,floatTextWide,float OffWide,unsigned char TextFont,int TextLong,CString Text); http://www.paper51.com

CPline* AddPLine(short ColorPen,shortColorBrush,float LineWide,short LineType,short Layer,int id_only,intNumble,PointStruct *PointList); paper51.com

CPlineRgn* AddPLineRgn(shortColorPen,short ColorBrush,float LineWide,short LineType,short Layer,intid_only,int Numble,PointStruct *PointList,BOOL bTransparent,BOOL bFill);

copyright paper51.com

这6个函数分别用来实现增加一条直线、一个圆、一个圆弧、一个标注文本、一条连续直线和一个多边形区域的功能。函数返回指向新增图形元素对象的指针。

copyright paper51.com

3)      得到指向图形元素对象的指针 http://www.paper51.com

在一个矢量图形系统中,有大量的图形元素,指向图形元素对象的指针被保存在文档类对应的CObArray对象中。在系统的操作过程中,为了实现对图形元素的各种操作功能,需要得到指向指定图形元素对象的指针,为此,在文档类CDrawDoc 中定义一个函数GetGraph如下:

paper51.com

Public: http://www.paper51.com

CDraw* GetGraph(short Lb, int index ); copyright paper51.com

在实现文件drawdoc.cpp中,加入函数的具体实现代码。

copyright paper51.com

4)      删除图形元素对象

paper51.com

为了能够从CObArray 对象中删除一个指定图形元素对象指针,在文档类CDrawDoc中定义一个成员函数:

内容来自论文无忧网 www.paper51.com

Public: paper51.com

Void DeleteGraph(short Lb, int index); copyright paper51.com

在实现文件drawdoc.cpp中,加入函数的具体实现代码。 paper51.com

5)  得到各类图形元素的数目

http://www.paper51.com

为了能够随时得到文档中各类图形元素对象的数目,在文档类CDrawDoc中,定义一个成员函数如下:

http://www.paper51.com

Public:

内容来自www.paper51.com

Int GetGraphNumb(short Lb);

内容来自论文无忧网 www.paper51.com

在实现文件drawdoc.cpp中,加入函数的具体实现代码。

copyright paper51.com

6)  得到存储各类图形元素CObArray 对象数组的最大下标

copyright paper51.com

在对各个图形元素类的所有图形元素进行操作时,需要得到存储在各个CObArray对象中的最大数组下标,然后对各个数组项实现遍历操作。为了得到存储在各个CObArray 对象中的最大数组下标,在文档类CDrawDoc中定义一个函数如下: 内容来自www.paper51.com

Public: http://www.paper51.com

Int GetGraphUpperBound(short Lb); copyright paper51.com

在实现文件drawdoc.cpp中,加入函数的具体实现代码。 copyright paper51.com

7)  得到某个识别号的图形元素对象指针在CObArray 数组中的存放位置 内容来自www.paper51.com

Public:

http://www.paper51.com

Int  GetGraphIndex(short Lb,int ID);

内容来自论文无忧网 www.paper51.com

在实现文件drawdoc.cpp中,加入函数的具体实现代码。 http://www.paper51.com

8)  得到图形元素的唯一识别号 内容来自论文无忧网 www.paper51.com

在应用程序Draw中,采用同类图形元素具有惟一识别号的方法,即每一类别的图形元素具有不同的成员变量m_id_only。

paper51.com

为了得到每类图形元素的惟一识别号,在文档类CDrawDoc中定义一个成员函数:

内容来自论文无忧网 www.paper51.com

public:

paper51.com

int GetGraphID(short Lb); 内容来自www.paper51.com

函数GetGraphID用来得到要增加的各类图形元素的惟一识别号,参数Lb用来表示图形类别。在实现文件drawdoc.cpp中,加入函数的实现代码。

paper51.com

------分隔线----------------------------
联系方式