基于wince的GDI 绘图程序.doc_第1页
基于wince的GDI 绘图程序.doc_第2页
基于wince的GDI 绘图程序.doc_第3页
基于wince的GDI 绘图程序.doc_第4页
基于wince的GDI 绘图程序.doc_第5页
免费预览已结束,剩余22页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

XX大学信息科学技术学院嵌入式系统大作业设计报告 项目名称:基于Wince的C#应用程序开发GDI绘图工具姓名:学号:班级:日期:2011-6-20GDI绘图工具1第一部分 概述21.1、Windows CE操作系统概述31.2、Windows CE应用程序介绍31.3、GDI+画图工具介绍4第二部分 设计任务42.1、需求分析42.2、程序功能4第三部分 设计原理53.1、主要的类及控件介绍53.2、功能设计7第四部分 设计方案74.1、界面设计74.2、代码设计8第五部分 系统测试与性能分析115.1、系统测试11第六部分 结论11附录121参考资料122设计步骤12203遇到的问题与解决方法214程序清单215课程体会25第一部分 概述嵌入式系统是“控制、监视或者辅助装置、机器和设备运行的装置”(devices used to control, monitor, or assist the operation of equipment, machinery or plants)。从中可以看出嵌入式系统是软件和硬件的综合体,还可以涵盖机械等附属装置。目前国内一个普遍被认同的定义是:以应用为中心、以计算机技术为基础、软件硬件可裁剪、适应应用系统对功能、可靠性、成本、体积、功耗严格要求的专用计算机系统。嵌入式操作系统种类繁多,例如:嵌入式Linux、Windows CE、VxWorks、pSOS 、等等,其中,Windows CE操作系统是一款微软公司开发的嵌入式操作系统,它继承Windows操作系统的许多优点,而且资源充足,简单易学,在嵌入式得到大量应用。随着手机、微型电脑设备等等嵌入式设备的蓬勃发展,嵌入式应用大量地发展了起来,许多在桌面广泛应用的程序越来越多地向嵌入式方向移植和应用,嵌入式应用程序正如火如荼地发展着!Windows CE的开发工具与平台也有很多,例如Embedded Visual C+等等,在本研究里面,我们选取Visual Studio 2005这个资源丰富,操作简便的开发平台,基于PAX270硬件平台进行图片浏览器的应用程序开发。1.1、Windows CE操作系统概述Windows CE是微软推出的一个32位、多线程、多任务的嵌入式操作系统,是微软专门为信息设备、移动应用、嵌入式应用等设计的嵌入式模块型操作系统。用户可选择、组合和配置Windows CE.NET的模块和组件来创建用户版的操作系统。Windows CE采用层状的体系结构,具有层次性强、可移植性好、组件化可剪裁、强调编程接口和支持上层应用等特点。其从下而上可分为四层:硬件层,OEM硬件适配层,操作系统服务层,应用层。其层次结构如下图所示:1.2、Windows CE应用程序介绍由于Windows CE的特性,Windows CE开发出来的应用程序极为广泛,几乎覆盖了生活中的所有电气设备,如掌上PDA、手机、电视机顶盒、数字电视、车载电脑、数字相机、家庭自动化系统、安全系统、自动售货机、消费电子设备等等。在Windows CE下,应用程序开发是针对给定的Windows CE,利用该平台提供的编程接口,使用特定的开发工具,实现特定功能的程序设计活动。由于Windows CE是一个可高度定制的操作系统,因此不同的基于Windows CE平台提供的API可能不同,在应用程序移植时,这一点必须引起应用开发人员的高度重视。而且,Windows CE的API是桌面Windows系统的子集,因而它并不具备所有能在桌面环境下调用的API,这一点也是要注意的。1.3、GDI+画图工具介绍 随着多媒体和互联网的快速发展,绘图工具成为了绝大部分计算机必不可少的基本软件之一。图片处理工具已经成为电脑的必备软件之一。比如Windows操作系统自带的Windows画图工具等,都是为了实现方便快捷画图和处理图片。同样,在相关嵌入式系统(如手机、MP4、数码相机等)中,画图也成为了不可或缺的功能。为此,我们专门开发了一款基于Windows CE系统的GDI+画图工具,主要实现在Windows CE系统上画线条,矩形,椭圆,擦图,相片显示并作画图处理。第二部分 设计任务我们知道,画图作为一种常用的应用程序,其基本的功能都是差不多的,比如,画线条,画椭圆,显示图片在上面作画图处理等等,因此我们实地亲自使用了在桌面环境下的一些图片应用程序,总结出一些比较基础的常用的功能,来作为我们的程序的需求。2.1、需求分析本软件为一个简单而且很实用的画图软件,不但可以画线条,矩形,椭圆,擦图,还能修改画出不同的颜色,浏览图片,删除、作画图处理,是一款在嵌入式环境下比较适合广大计算机用户和非专业的用户的画图工具处理软件。考虑到部分非专业的普通大众用户的实际情况,所以软件必须不仅功能要齐全而且也不累赘,与此同时,界面的设计必须友好,按钮清楚醒目,操作风格要与桌面大众化程序保持一致。2.2、程序功能程序实现两大部分的功能:基本操作功能和效果处理功能。 基本操作功能:包括以下几个方面:“打开”、“上一张”、“下一张”、“删除”、“放大”、“缩小”、“左旋转”、“右旋转”、“关闭”。结构图如下面所示:清空画线条结束显示出来画椭圆画图显示出来画矩形颜色选择画文本擦图图片文件颜色处理功能:包括对图片进行“黑色”、“红色”、“黄色”、“蓝色”处理,拓展了软件对图片的处理功能。结构图如下:黑色红色黄色蓝色选择画图显示效果第三部分 设计原理3.1、主要的类及控件介绍使用C#语言开发基于WINCE系统的图片浏览器,主要需要使用到GDI+绘图功能以及部分WINDOWS控件,由于Form控件自身有Piant事件进行对图片对象的引用。直接用此方法来获取对图形对象的引用。1.Form控件Form_Paint演示代码如下:Private void Form_Paint(object sender,System.Windows.Forms.PaintEventEventArgs pe)Graphics g=pe.Graphics;2.Image类由PictureBox的用法可以看出,PictureBox需要同Image类配合使用。Image类是一个抽象类,该类提供了基本的图片访问功能。由于Image类是一个抽象类,所以不能直接使用其本身实例化一个对象,但是,我们可以使用FromFile和FromStream等静态方法,或Image类的子类(如Bitmap类)构造其实例。创建Image类的方法如下所示:Image image=Image.FromFile(“图片路径”);或System.IO.Stream stream=new System.IO.FileStream(“图片路径”, System.IO.FileMode.Open);Image image=Image.FromStream(stream);Stream.Close();或Image image=new Bitmap(“图片路径”);G=Graphics.FormImage(myBitmap);经多次实验表明,在WINCE6.0系统中只支持第三种,即通过Bitmap类来构造Image类的实例。3.Bitmap类位图(bitmap)是由许多像小方块一样的像素组成的图形。Bitmap类封装了位图及其属性的像素数据,其主要的方法有GetPixel,SetPixel,LockBits,UnlockBits等。其在WINCE中常用的实例化方法有如下几种:Bitmap bmp=new Bitmap(“图片路径”);/从指定的文件初始化/其实例;或Bitmap bmp=new Bitmap(Image image);/从指定的现有图片初始化/其实例;或Bitmap bmp=new Bitmap(int width,int height);4.Graphics类在实现缩放及旋转等图片处理功能时,经常要使用到Graphics类。Graphics类是System.Drawing命名空间下最主要的类,绘制所有图形都需要调动该类的方法来实现,例如可以使用DrawLine方法画一条直线,使用DrawImage方法画一副图像等。Graphics类没有构造函数,所有不能使用new关键字生成一个Graphics类的实例,通常可以用如下三种方式创建Graphics对象: Graphics g=Control.CreateGraphics();/使用控件的/CreateGraphics方法创建实例;或Graphics g=e.Graphics;/ 使用控件的Paint事件或重载OnPaint方/法,从PaintEventArgs对象中的Graphics/属性获取Graphics对象。或Image image=Image.FromFile(“图片路径”);Graphics g=Graphics.FromImage(image); 在WINCE系统上,我们采用了第三种方法,即通过使用Graphics类的静态方法,从一些对象的句柄中获取Graphics对象。通过使用获得的Graphics对象的DrawImage方法,实现我们开发软件的缩放及选择功能。同时,与Graphics对象一起使用的主要对象如下4种:u Pen类:Pen类主要用于绘制线条,或者用线条组合成其他几何形状。u Brush类:Brush类主要用于填充几何图形,如将正方形和圆形填充成其他颜色。u Font类:Font类主要用于控制文本的字形样式。u Color结构:可以设置不同颜色。3.2、功能设计我们设计的画图工具在功能上主要可以分为两大功能模块:基本操作功能模块和效果处理功能模块。系统功能图如下:画图工具基本操作功能模块颜色处理功能模块画图(线条,矩形,椭圆)图片处理关闭、删除文本显示黑色红色黄色蓝色第四部分 设计方案我们通过对一些画图工具进行研究,总结了它们的一些基本特征,从而构想出我们的设计方案。开发环境:Windows XP开发工具:Microsoft Visual studio2005硬件环境: 台式计算机、嵌入式处理器:PAX270运行环境:Windows XP、Visual Studio 2005、WindowsCE5.0(不包含图片浏览组件)、亿道嵌入式开发板EELiod270教学开发平台。4.1、界面设计在界面设计中,我们参考了大众化软件常见界面,以图片显示区域为中心,上面设置菜单栏,菜单栏下拉有选项供操作,下面设置快速操作按钮,方便用户快速使用画图操作的功能。整体效果如下所示:4.2、代码设计 整个代码分控件和纯代码这两部分。控件部分:包括Form(用来画图)、Button(用来设置菜单栏)、openFileDialog(打开文件对话框)、saveFileDialog(保存文件对话框)。 纯代码部分:头文件部分,引用系统头文件,如下:using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Text;using System.Windows.Forms;在窗体的左下角添加控件,用于选择颜色,编写颜色选择按钮的单击事件代码如下:private void button2_Click(object sender, EventArgs e) color = Color.Black; private void button4_Click(object sender, EventArgs e) color = Color.Yellow; private void button5_Click(object sender, EventArgs e) color = Color.Red; private void button6_Click(object sender, EventArgs e) color = Color.Blue; 编写Form控件的MouseDown和MouseUp事件代码如下: private void panel1_MouseDown(object sender, MouseEventArgs e) if (e.Button = MouseButtons.Left) p1.X = e.X; p1.Y = e.Y; private void panel1_MouseUp(object sender, MouseEventArgs e) if (e.Button = MouseButtons.Left) p2.X = e.X; p2.Y = e.Y; g = this.CreateGraphics();程序中声明的变量如下:private Point p1 = new Point(); private Point p2 = new Point(); Graphics g; Color color = Color.Black; Style style = Style.Line; TextBox t;实现画线条,椭圆,矩形,绘制图片文件,文本框,橡皮擦功能的核心代码如下:g = this.CreateGraphics(); switch (style) case Style.Line: g.DrawLine(new Pen(color), p1.X,p1.Y, p2.X,p2.Y);/(画线条) break; case Style.Rect: g.DrawRectangle(new Pen(color), new Rectangle(p1.X,p1.Y,Math.Abs(p2.X-p1.X),Math.Abs(p2.Y-p1.Y); /(画矩形) break; case Style.Ellipse: g.DrawEllipse(new Pen(color), new Rectangle(p1.X, p1.Y, Math.Abs(p2.X - p1.X), Math.Abs(p2.Y - p1.Y); /(画椭圆) break; case Style.Text: t = new TextBox(); t.KeyPress += new KeyPressEventHandler(t_KeyPress);/添加文本框 t.Top = p2.Y; t.Left = p2.X; this.Controls.Add(t); this.Refresh(); break; case Style.Erase: g.FillRectangle(new SolidBrush(Color.White), new Rectangle(p1.X, p1.Y, Math.Abs(p2.X - p1.X), Math.Abs(p2.Y - p1.Y); /橡皮檫功能 break; default: break; private void button9_Click(object sender, EventArgs e) /绘制图片 if (openFileDialog1.ShowDialog() = DialogResult.OK) g = this.CreateGraphics(); Bitmap b = new Bitmap(openFileDialog1.FileName); g.DrawImage(b, 0, 0); private void button10_Click(object sender, EventArgs e) /删除 style=Style.Erase; 第五部分 系统测试与性能分析作为一款大众化软件,其稳定性要求也是很高的,所以对软件系统进行测试和性能的分析是很重要的,所以我们也简单地进行一些相关的测试。5.1、系统测试 系统测试包括功能测试和用户界面测试。 1. 功能测试,包括画图、各种画图操作功能、效果操作功能。 打开功能测试结果如下所示:画图能否实现? 显示效果 线条 能 完美 矩形 能 完美 椭圆 能 完美 图片 能 一般 颜色操作功能测试结果如下: 效果名称 结果 黑色 正常 黄色 正常 红色 正常 蓝色 正常 2. 用户界面测试:经过组员测试,得到如下结果:良好。第六部分 结论Windows CE是微软公司嵌入式、移动计算平台的基础,它是一个开放的、可升级的32位嵌入式操作系统,是基于掌上型电脑类的电子设备操作系统。与Windows 95/98、Windows NT不同的是,Windows CE是所有源代码全部由微软自行开发的嵌入式新型操作系统,其操作界面虽来源于Windows 95/98,但Windows CE是基于WIN32 API重新开发、新型的信息设备的平台。Windows CE具有模块化、结构化和基于Win32应用程序接口和与处理器无关等特点。Windows CE不仅继承了传统的Windows图形界面,并且在Windows CE平台上可以使用Windows 95/98上的编程工具(如Visual Basic、Visual C+等)、使用同样的函数、使用同样的界面风格,使绝大多数的应用软件只需简单的修改和移植就可以在Windows CE平台上继续使用。总的来说,在可见的未来,以Windows CE的嵌入式系统,一定会在后PC时代发挥出巨大的作用和衍生丰富的应用。附录1参考资料1 张立 等编著。C#2.0实例自学手册。电子工业出版社,2008.1 3 马文华。嵌入式系统设计与开发。科学出版社, 2006.34 宁杨、陆贵强。Windows CE.net内核定制及应用开发,电子工业出版社,2005.25 何宗键.Windows CE嵌入式系统,北京航空航天出版社,2006.96 相关网页: , 以及百度文库等。2设计步骤 2.1操作系统的下载:第一步: 从“开始-所有程序-附件-通讯-超级终端”新建一个超级中断链接。【图1】超级终端连接描述第二步: 选择连接串口,并将串口波特率设为:38400,数据流控制选择“无”,按“确定”按钮【图2】超级终端设置选项【图3】超级终端成功设置菜单第三步: 确定一下PC与目标平台的串口接口线已接上,然后打开平台电源开关,Bootloader程序时,按空格键进入Eboot的菜单选项中。【图4】超级终端显示Boot Loader 启动菜单选项第四步: 启动Visual Studio 2005,在Target-connectivity Option中打开映象的下载配置选项。 【图5】Connectivity Options 菜单选项第五步: 在Download与Transport 选项都选择“Ethernet”.在Debugger中选择“None”.【图6】Target Device Connectivity Options 选项第六步: 点击Download选择右边的“Settings”,让PB来检测设备名。用网线连通PC和目标平台,将PC和目标平台的网络连接设置在同一网段,根据超级终端的Eboot菜单提示,选取“D”项,即按键盘上的D键。 【图7】Ethernet download Settings 设置选项【图8】目标平台发送广播包选项第七步: 在Ethernet Download Settings中,就可以自动检测到目标设备名,点击“Active Devices”中的设备名就可以把设备名添加到“Device Boot Name”中去。然后点击“OK”,再点“Apply”按钮,然后按“Close”按钮关闭“Target Device connectivity Options”窗口. 【图9】检测连接选项第八步: 从Visual Studio2005的Target-Attach Device菜单中,选中NK.BIN文件,连接目标平台。【图10】Attach device 菜单选项第九步: 在弹出的下载窗口就可以看到NK下载的进度。 【图11】NK下载过程第十步: 操作系统映像下载完毕后,Windows Embedded CE 6.0操作系统自动启动。【图45】Windows CE 6.0 启动界面2.2应用程序部分:1.打开VisualStudio2005,选择File-New-Project,新建基于WINCE5.0的C#设备应用程序。如下图所示:2.设计界面,添加菜单项和相关功能控件,如图所示:4.程序设计完成之后,点击Build-Build Solution。纠正提示的错误及警告之后,点击Debug-Start Debugging 。在出现的设备部署,选择WinCE6EEliod ARMV4I Device,如下图所示。程序在实验箱可以正常运行:3遇到的问题与解决方法1. 本来在界面想用SplitControl控件来实现显示,但Wince里面没有这个控件。最后只能直接在Form控件里画图。2. 一些函数方法,Wince里面跟Windows里实现是有区别的,原因是一些可以在windows 环境下使用的函数在WINCE系统上不支持,或者是构造对象时需要使用到的类的参数不同。而且很多控件Wince里面没有,只好用相对简单的控件代替。4程序清单using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Text;using System.Windows.Forms;namespace DeviceApplication3 public partial class Form1 : Form private Point p1 = new Point(); private Point p2 = new Point(); Graphics g; Color color = Color.Black; Style style = Style.Line; TextBox t; enum Style Line, Rect, Ellipse, Text, Erase public Form1() InitializeComponent(); private void textBox1_TextChanged(object sender, EventArgs e) private void button1_Click(object sender, EventArgs e) style = Style.Line; private void Form1_Load(object sender, EventArgs e) private void panel1_GotFocus(object sender, EventArgs e) private void panel1_Paint(object sender, PaintEventArgs e) private void panel1_MouseDown(object sender, MouseEventArgs e) if (e.Button = MouseButtons.Left) p1.X = e.X; p1.Y = e.Y; private void panel1_MouseUp(object sender, MouseEventArgs e) if (e.Button = MouseButtons.Left) p2.X = e.X; p2.Y = e.Y; g = this.CreateGraphics(); switch (style) case Style.Line: g.DrawLine(new Pen(color), p1.X,p1.Y, p2.X,p2.Y); break; case Style.Rect: g.DrawRectangle(new Pen(color), new Rectangle(p1.X,p1.Y,Math.Abs(p2.X-p1.X),Math.Abs(p2.Y-p1.Y); break; case Style.Ellipse: g.DrawEllipse(new Pen(color), new Rectangle(p1.X, p1.Y, Math.Abs(p2.X - p1.X), Math.Abs(p2.Y - p1.Y); break; case Style.Text: t = new TextBox(); t.KeyPress += new KeyPressEventHandler(t_KeyPress); t.Top = p2.Y; t.Left = p2.X; this.Controls.Add(t); this.Refresh(); break; case Style.Erase: g.FillRectangle(new SolidBrush(Color.White), new Rectangle(p1.X, p1.Y, Math.Abs(p2.X - p1.X), Math.Abs(p2.Y - p1.Y); break; default: break; void t_KeyPress(object sender, KeyPressEventArgs e) g = this.CreateGraphics(); if (e.KeyChar.ToString() = r) this.Controls.Remove(t); g.DrawString(t.Text, new Font(宋体, 100, FontStyle.Regular), new SolidBrush(color),p2.X,p2.Y); private void button2_Click(object sender, EventArgs e) color = Color.Black; private void button3_Click(object sender, EventArgs e) style = Style.Rect; private void button4_Click(object sender, EventArgs e) color = Color.Yellow; private void button5_Click(

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论