基于C#多机联合绘图软件的实现.docx
- 文档编号:15284893
- 上传时间:2023-07-03
- 格式:DOCX
- 页数:73
- 大小:985.47KB
基于C#多机联合绘图软件的实现.docx
《基于C#多机联合绘图软件的实现.docx》由会员分享,可在线阅读,更多相关《基于C#多机联合绘图软件的实现.docx(73页珍藏版)》请在冰点文库上搜索。
基于C#多机联合绘图软件的实现
毕业设计(论文)
题目:
基于C#多机联合绘图软件的实现
系别信息工程系
专业名称电子信息工程
班级学号0982052
学生姓名
指导教师
二O一三年五月
学士学位论文原创性声明
本人声明,所呈交的论文是本人在导师的指导下独立完成的研究成果。
除了文中特别加以标注引用的内容外,本论文不包含法律意义上已属于他人的任何形式的研究成果,也不包含本人已用于其他学位申请的论文或成果。
对本文的研究作出重要贡献的个人和集体,均已在文中以明确方式表明。
本人完全意识到本声明的法律后果由本人承担。
作者签名:
日期:
2013年5月日
学位论文版权使用授权书
本学位论文作者完全了解学校有关保留、使用学位论文的规定,同意学校保留并向国家有关部门或机构送交论文的复印件和电子版,允许论文被查阅和借阅。
本人授权南昌航空大学科技学院可以将本论文的全部或部分内容编入有关数据库进行检索,可以采用影印、缩印或扫描等复制手段保存和汇编本学位论文。
作者签名:
日期:
2013年5月日
导师签名:
日期:
2013年5月日
基于C#多机联合绘图软件的实现
摘要:
随着计算机技术的发展和人们的需求,越来越多的人们选择计算机绘图软件,了解传统的绘图软件的起源、现状和发展趋势。
再对现有的传统的绘图软件进行分析比较的基础上,提出了基于局域网的绘图软件的功能需求,多机联合绘图系统印证了这一需求,接下来讨论了基于局域网绘图软件的开发过程,着重分析了多机联合制图通信技术,并给出了详细的实现方法。
最后对本次绘图系统开发进行总结。
随着计算机性能的提高和计算机视觉理论及技术的发展,这种技术必将日趋成熟。
网络技术是计算机技术和通信技术相互渗透而又紧密结合的产物。
计算机绘图技术作为计算机应用的一个重要方面。
本次毕业设计的多机联合绘图系统分为类的设计和联机操作两大部分。
其中类的设计主要是由绘图对象类设计和工具类设计,用MicrosoftVisualStudio2008开发工具软件编程来实现每一个部分,最后实现多机联合绘图软件,多台计算机联合制图。
关键词:
多机联合、图像处理、MicrosoftVisualStudio2008
指导老师签名:
Basedonthec#implementationofmulti-jointdrawingsoftware
Studentname:
CaiXiangClass:
0982052
Supervisor:
FangFang
Abstract:
Withthedevelopmentofcomputertechnologyandpeople'sneeds,anincreasingnumberofpeoplechoosecomputerdrawingsoftware,learntraditionalorigins,currentsituationanddevelopmenttrendofdrawing.Drawingonexistinglegacysoftwarebasedonacomparisonofproposedfunctionalrequirementsbasedonlocalareanetworkdrawing,confirmsthisneedjointdrawingsystem,LANmappingsoftwarewerediscussedthroughouttherestofthedevelopmentprocess,focusedonanumberofjointcartographiccommunicationtechniques,andgivesdetailedimplementationmethods.Finalsummaryofthismappingsystemdevelopedby.Ascomputerperformanceincreaseanddevelopmentoftheoryandtechnologyofcomputervision,thetechnologywillmature.Networktechnologyisthemutualpenetrationofcomputertechnologyandcommunicationtechnologyandseamlessintegrationofproducts.Computergraphicstechnologyasanimportantaspectofcomputerapplications.
Thismulti-combinedgraduationdesignclassdesign,andonlinemappingsystemdividedintotwoparts.Wheretheclassdesignwasdesignedbydrawingobjectclassesandtoolstodesign,programmingwithMicrosoftVisualStudio2008softwaredevelopmenttoolstoimplementeverypart,finallyachievingacombineddrawingsoftware,multiplecomputermergersystemmap.
Keyword:
CombinedmachineImageProcessingMicrosoftVisualStudio2008
SignatureofSupervisor:
1.2系统功能调查................................................2
1.3系统目标....................................................3
2.3架构设计.....................................................4
2.3.1绘图对象类设计........................................4
2.3.2工具类设计.............................................5
2.3.3其他类设计....................................................6
2.4主机和附机...........................................................6
3.4其他功能的实现.............................................28
3.4.1编辑功能..............................................28
3.4.2导出图像..............................................29
3.4.3图像的打印和预览......................................29
前言
当今信息社会以多媒体为代表的信息技术产业的发展和应用对人类社会的影响和作用愈来愈明显,愈来愈强,也就是说,图形图像技术的飞速发展也是必然趋势,掌握图形图像处理技术对现代人来说也是很必要的。
随着计算机技术的发展和人们的需求,越来越多的人们选择计算机绘图软件,了解传统的绘图软件的起源、现状和发展趋势;在对现有的传统的绘图软件进行分析比较的基础上,提出了基于局域网的绘图软件的功能需求,接下来讨论了基于局域网绘图软件的开发过程,着重分析了多机联合制图通信技术,并给出了详细的实现方法。
最后对本次绘图系统开发进行总结。
随着计算机性能的提高和计算机视觉理论及技术的发展,这种技术必将日趋成熟。
本次毕业设计的多机联合绘图系统分为类的设计和联机操作两大部分。
其中类的设计主要是由绘图对象类设计和工具类设计,用MicrosoftVisualStudio2008开发工具软件编程来实现每一个部分,最后实现多机联合绘图软件,多台计算机联合制图。
第一章需求分析
1.1应用现状调查
目前,大多数绘图系统都是单体运行的,而多机联合绘图系统可实现多台计算机同时对图形图像进行处理分析,在对现有的传统的绘图软件进行分析比较的基础上,提出了基于局域网的绘图软件的功能需求,主要可用于网络布线,及网络通信,因此研究及开发这一种技术必将日趋成熟。
1.2系统功能调查
整个系统从总体上分为类的设计,联机操作两大部分,系统应实现的功能如下
图1.1系统功能模块图
1.3系统目标
利用MicrosoftVisualStudio2008通过类的设计实现单机绘图,该系统实现矩形,曲线,直线,文字,图像的绘制,再通过联机操作,实现主机和附机的连接,最后实现多机联合绘图。
第二章概要设计
2.1系统分析
本次设计的多机联合绘图系统是一个基于C#实现多台计算机间协作的操作系统。
多台计算机在本地的局域网络或者固定IP的Internet上制作同一张图,制作时将计算机分为主机和附机。
任何一台计算机都可以作为主机。
将某台计算机作为主机后,连接到该机的其他同时制图的计算机便只能作为附机。
不论是主机还是附机,每个联合制作的计算机看到的设计界面都是一样的。
任何一台计算机添加或修改一个图形时,其结果都会立即反映到其他计算机上。
系统要求必须要有一台计算机作为主机,并且只能有一个主机。
只有当主机进入制作界面之后,其他附机才能进入制作界面。
当主机退出制作界面之后,所有的附机将无法继续制作。
多机联合绘图系统以几种具有代表性的图形图像的绘制方法为主,并不是实现所有图形图像的绘制。
2.2MicrosoftVisualStudio2008开发工具简介
本次设计应用编程工具是MicrosoftVisualStudio2008,它是面向WindowsVista、Office2007、Web2.0的下一代开发工具,代号“Orcas”,是对VisualStudio2005一次及时、全面的升级。
VS2008引入了250多个新特性,整合了对象、关系型数据、XML的访问方式,语言更加简洁。
使用VisualStudio2008可以高效开发Windows应用。
设计器中可以实时反映变更,XAML中智能感知功能可以提高开发效率。
同时VisualStudio2008支持项目模板、调试器和部署程序。
VisualStudio2008可以高效开发Web应用,集成了AJAX1.0,包含AJAX项目模板,它还可以高效开发Office应用和Mobile应用。
2.3架构设计
在多机联合绘图系统中,为了简化起见,只实现矩形,曲线,文字,直线和图像等基本图形图像的绘制。
2.3.1绘图对象类设计
为了统一管理各种绘图对象,可以将要绘制的对象抽象成一个抽象基类DrawObject,其他的绘制对象则从DrawObject继承,在扩充类中,通过重写DrawObject类的属性和方法,即可实现针对特定的图形图像的绘制。
各绘图对象类之间的关系如图2.1所示。
在图2.1中,DrawObject是所要绘制对象的抽象基类,在该类中定义绘图对象的公共属性和方法。
图2.1绘制对象间的继承关系
类TrackRectangle,TrackText,TracCurve都是从DrawObject继承。
TrackRectangle,TrackText,TracCurve这三个类分别表示矩形,文字,曲线的封装类,这三个类中均不实现绘制方法,而是由其派生类实现。
TrackRectangle表示可以从规则矩形特征中抽取句柄的所有对象的基类,如矩形,椭圆,图像等。
在这个列子中,DrawMyRectangle从TrackRectangle继承表示矩形,DrawMyImage从TrackRectangle继承表示绘制图像。
如果需要绘制椭圆,只需要从TrackRectangle派生即可。
TrackCurve是所有以点作为句柄特征的所有曲线类的基类。
曲线可以有带有箭头的曲线,不带箭头的曲线,封闭曲线以及其他特殊曲线等。
DrawMyCurve从TrackCurve继承表示绘制的是带有箭头的曲线。
TrackText是所有文字绘制的基类,DrawMyText类从TrackText实现文字的绘制,如果需要其他效果的文字,一样可以从TrackText类派生。
2.3.2工具类设计
当用户使用鼠标拖放绘制,选中和移动对象时,都会用到窗体或控件MouseMove,MouseDown,MouseUp事件。
对于不同的对象,这些鼠标事件中的实现代码也不尽相同,为此需要提供一个实现图形图像鼠标控制基类ToolObject.当用户通过鼠标移动图像,绘制矩形,绘制文本,绘制曲线,绘制直线的操作时,将这些类从ToolObject类派生,然后在扩充类中重写基类对应的方法即可。
类ToolRectangle,ToolCurve,ToolText,ToolImage,ToolPointer分别表示绘制矩形,曲线,文字,图像和平移图形图像时对应的鼠标控制操作类,他们均从ToolObject派生。
各类之间的关系如图2.2所示
图2.2工具类间的继承关系
2.3.3其他类设计
除了绘图对象类和工具类以外,系统中还包括公共类以及进行主机和附机通信的类。
具体如下。
(1)ObjectID类提供为图形图像对象创建ID的方法。
(2)CC类提供系统公用的属性和方法定义。
(3)GraphicsList类保存绘制对象的列表,同时实现绘图对象的查找,删除,选择等功能。
绘制对象列表由List类型的字段来进行维护。
(4)User类封装与服务器通信的客户端信息。
(5)MyClient类封装附机的相关信息,提供附机向主机发送信息以及从主机接收信息的相关处理方法。
(6)MyServer类封装主机的相关信息,提供主机向附机发送信息以及从附机接收信息的相关处理方法
(7)MyService类封装公用的数据处理方法,提供绘制和平移对象的方法
2.4主机与附机
在主机和附机的通信中,主机收到附机的发送的字符信息后,需要解析字符串的含义,并确定主机需要执行的操作。
对于附机来说也是一样的道理,字符串分为命令部分和参数部分,命令部分和参数部分之间以及参数部分的各个参数之间均用逗号分隔。
第三章系统详细设计
3.1初始模块
初始界面主要显示的就是一个初始化界面,它是整个系统的第一个模块,其相应的窗体界面见图3.1:
图3.1多机联合绘图初始化界面
这是PreMainForm窗体,在多机联合绘图系统中,主机和附机都是通过发送一系列的命令后,再通过响应来实现操作的。
a.附机发送给主机的命令:
(1)通过发送Login命令,附机与主机建立连接后,进入操作界面。
主机接受后,返回WelcomeLogin命令,并把当前的图像图像字节返回给附机。
(2)通过发送Logout命令,附机退出制作。
主机收到此命令后,清除附机对应的信息,结束与此附机对应的线程,同时把命令发送给其他附机。
(3)通过GetID命令来获取图形图像的唯一的ID.
b.主机发给附机的命令:
(1)通过ID命令,主机返回给图像图形的ID
(2)通过Logout命令,主机退出制作
c.主机IP的确立核心代码如下:
IPAddressip;
if(IPAddress.TryParse(textBoxServer.Text,outip)==false)
{
toolStripLabel1.Text="主机IP地址格式不正确,请重新输入!
";
buttonOK.Enabled=true;
return;
}
else
{
toolStripLabel1.Text="正在连接主机,请稍等……";
backgroundWorker1.RunWorkerAsync();
while(backgroundWorker1.IsBusy)
{
if(backgroundWorker1.CancellationPending==false)
{
Application.DoEvents();
}
}
}
}
3.2绘图模块设计
此模块是整个系统的核心,实现主要的功能:
矩形,曲线,直线,文字,图像的基本绘制,以及删除,打印,导出图像的基本功能。
图3.2多机联合绘图程序
其主要通过菜单来实现下跳到其他窗体,通过菜单实现链接不同窗体其核心代码如下;
publicpartialclassMainForm:
Form
{
publicMainForm()
{
InitializeComponent();
this.SuspendLayout();
CC.palette=newPalette();
CC.palette.Dock=DockStyle.Fill;
this.Controls.Add(CC.palette);
this.ResumeLayout();
SetUserState();
CC.myService.mainForm=this;
if(CC.userState==UserState.Server||CC.userState==UserState.SingleUser)
{
CC.palette.DeserializeObject(CC.backupFileName);
}
else
{
CC.me.SendToServer("Login");
}
}
3.2.1矩形的绘制
(1)在解决方案管理器中,添加一个名为DrawObject.cs的类,表示所有图形图像的基类,代码定义如下;
publicabstractclassDrawObject
{
privateboolselected;
///
publicboolSelected
{
get{returnselected;}
set{selected=value;}
}
protectedColorpenColor;
///
publicColorPenColor
{
get{returnpenColor;}
set{penColor=value;}
}
protectedintpenWidth=2;
///
publicintPenWidth
{
get{returnpenWidth;}
set{penWidth=value;}
}
protectedintid;
publicintID
{
get{returnid;}
set{id=value;}
}
然后再添加一个名为DrawMyRectangle的类文件,表示要绘制的矩形对象,让该类从DrawObject继承,并重写DrawObject类的Draw方法。
主要代码如下;
classDrawMyRectangle:
TrackRectangle
{
publicDrawMyRectangle()
{
}
publicDrawMyRectangle(intx,inty,intwidth,intheight,ColorpenColor,intid)
{
this.objRectangle=newRectangle(x,y,width,height);
this.penColor=penColor;
this.id=id;
}
publicoverridevoidDraw(Graphicsg)
{
Penpen=newPen(penColor);
g.DrawRectangle(pen,objRectangle);
pen.Dispose();
}
}
}
(2)在解决方案管理器中,添加一个名为CC.cs的类,提供系统公共的属性和方法。
CC类中提供了为图形图像对象分配ID的方法。
具体代码请看附录的源代码;
(3)分别添加名为ToolObject.cs和ToolRectangle.cs的类文件,其中,ToolObject表示封装鼠标事件的操作基类,ToolRectangle实现绘制矩形是的鼠标操作。
ToolObject类的主要代码如下;
classToolObject
{
protectedboolisNewObjectAdded=false;
publicvirtualvoidOnMouseDown(Palettepalette,MouseEventArgse)
{
isNewObjectAdded=false;
CC.SetNewID();
}
publicvirtualvoidOnMouseMove(Palettepalette,MouseEventArgse)
{
if(isNewObjectAdded==false)
{
return;
}
Pointpoint=newPoint(e.X,e.Y);
intindex=CC.myService.FindObjectIndex(CC.ID);
if(e.Button==MouseButtons.Left)
{
DrawObjectw=palette.graphics[index];
w.MoveHandleTo(point,5);
}
palette.Refresh();
}
publicvirtualvoidOnMouseUp(Palettepalette,MouseEventArgse)
{
palette.Capture=false;
palette.Refresh();
isNewObjectAdded=false;
}
///
///添加新的图形对象
///
protectedvoidAddNewObject(Palettepalette,DrawObjectw)
{
palette.gra
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 C# 联合 绘图 软件 实现