




已阅读5页,还剩9页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
蚌埠学院期末考察作业课程考查作业 课程名称C#课程设计题目名称画图工具应用程序专业班级2014级软件工程班学生姓名学 号指导教师二一七年一月十日蚌埠学院计算机工程学院考查成绩评定表评语:等级: 授课教师: 年 月 日一 GDI+编程1(一)GDI+简介1(二)Graphics类11、Paint事件12、CreateGraphics方法13、Graphics.FromImage方法2二 综合应用实例2(一)界面设计2(二)属性设置2(三)程序代码设计4(四)运行程序9一 GDI+编程Windows系统是基于图形的操作系统,图形是windows应用程序的基本元素,随着计算机技术的发展,应用程序越来越多地使用图形和多媒体技术,用户界面更加的美观,人际交互也更加方便。处理位图图像和图像文件(bmp、jpg、gif、wmf等),还可以显示各种风格的文字。(一)GDI+简介GDI+类库最早出现在windows2000中,现在已成为.NET框架的重要组成部分。GDI+包括一系列处理图形、文字和图像的类,它提供大量的二位图形绘制和图像处理功能,但不包括三维图形处理功能,要处理三维图形,仍然需要通过COMj接口调用DirectX类库来完成。要在屏幕或打印机上来从显示信息,程序员只需调用GDI+类提供的方法,这些方法随后调用的特定设备驱动程序。通过使用GDI+,可以将用应用程序与图形硬件分隔开来,而无需用考虑特定设备的细节,正是这种分隔使得程序员能够创建于设备无关的应用程序。(二)Graphics类Graphics类是使用GDI+的基础,它代表了所有的输出显示的绘图环境,用户可以通过编程操作Graphics对象在屏幕上绘制图形、呈现文本或操作图像。创建Graphics对象的方法很多,下面列出了3种方法。1、Paint事件在为窗口编写Paint事件处理程序的时候,图形对象作为一个PaintEventArgs累额度实例提供。在下面的代码引用Paint事件的PaintEventArgs中的Graphics对象。Private void Form1_Paint(object sender, System.Windows.Forms.PaintEventArgs pe) Graphics g= pe.Graphics;2、CreateGraphics方法使用控件或窗口的CreateGraphics()方法获取对Graphics对象的引用,该对象表示这个控件或窗口的绘制表面。例如: Graphics g; g=this.CreateGraphics();3、Graphics.FromImage方法从Image类派生的任何对象创建图形对象,调用Graphics.FromImage()方法即可。例如:Bitmap myBitmap=new Bitmap(”c:myPic.bmp”);Graphics g=Graphics.FromImage(myBitmap); 在GDI+中,可使用“画笔”和“画刷”对对象来呈现图形、文本和图像。画笔是Pen类的实例,可用于绘制线条和空心型状。画刷是从抽象类Brush类派生的任何类的实例,可用于填充形状或绘制文本。Color对象是表示特定颜色类的实例,可使用构造函数指定画笔和画刷所呈现图形的颜色。例如:Pen myPen=new Pen(Color.Red);SolidBrush myBrush = new SolidBrush(Color.Brush);二 综合应用实例在应用程序开发过程中经常涉及图形图像的应用。下面就模仿Windows系统自带的画图工具设计一个画图工具。(一)界面设计新建一个Windows窗体应用程序,将窗体Form1调整到适当大小,在窗体Form1中添加1个Panel、1个PictureBox和1个StatusStrip控件,在Panel控件中分别加入3个GroupBox,3个GroupBox控件中再分别加入9个Button、5个Button和7个Button控件,添加1个ColorDialog控件。在StatusStrip控件中添加一个ToolStripStatusLabe。(二)属性设置将StatusStrip控件中的ToolStripStatusLabe1的Text 属性设置为空值,画图工具中控件属性的设置如图2-1所示。其中GroupBox1、GroupBox2、GroupBox3分租框中包含的按钮控件的属性设置如表2-2、表2-3、表2-4所示。表2-1 窗体和控件属性设置对象对象名属性名属性值对象对象名属性名属性值FormForm1Text画图工具GroupBoxgroupBox1Text工具PictureBoxpictureBox1BackcolorWhitegroupBox2Text宽度DockFillgroupBox3Text颜色BorderStyleFixed3DPanelDockRight表2-2 “工具”分组框中按钮控件属性设置对象名属性名属性值对象名属性名属性值button1Image,Tag表示铅笔的图片,0button6Image,Tag表示填充矩形的图片,5button2Image,Tag表示直线的图片,1button7Image,Tag表示橡皮擦的图片,6button3Image,Tag表示空心椭圆的图片,2btnNewImage表示新建的图片button4Image,Tag表示填充椭圆的图片,3btnExitImage表示退出的图片button5Image,Tag表示空心矩形的图片,4表2-3 “宽度”分组框中按钮控件属性设置对象名属性名属性值button9Image,Tag,FlatStyle表示宽度为1的直线图片,1,Flatbutton10Image,Tag,FlatStyle表示宽度为2的直线图片,2,Flatbutton11Image,Tag,FlatStyle表示宽度为3的直线图片,3,Flatbutton12Image,Tag,FlatStyle表示宽度为4的直线图片,4,Flatbutton13Image,Tag,FlatStyle表示宽度为5的直线图片,5,Flat表2-4 “颜色”分组框中按钮控件属性设置对象名属性属性值对象名属性名属性值button14BackColor,FlagStyleControl,Flatbutton18BackColor,FlagStyleBlack,Flatbutton15BackColor,FlagStyleRed,Flagbutton19BackColor,FlagStyleBlue,Flatbutton16BackColor,FlagStyleYellow,Flagbutton20BackColor,FlagStyle,TextControl,Flat,Cbutton17BackColor,FlagStyleGreen,Flat(三)程序代码设计定义画图的起终点、选择的图形枚举、画笔的宽度和图形枚举的代码如下:Graphics g; Point pStart,pEnd;Int ChoiceGraph;Int penWidth;Enum mySelectedPencil,Line,Ellipse,FillEllipse,Rec,FillRec,Eraser;窗体加载的事件代码如下:Private void Form1_Load(object sender,EventArgs e) g=this.pictureBox1.CreateGraphics(); ChoiceGraph=(int)mySelected.Pencil; penWidth=1;选择“工具”分组框中工具按钮时,将所选择的按钮Tag属性值作为所选择图形枚举。添加方法是在事件窗口中分别选择除“新建”和“退出”按钮外按钮的Click事件方法“btnTool_Click”。事件代码如下:Private void btnTool_Click(object sender,EventArgs e) ChoiceGraph=Convert.ToInt32(Button)sender).Tag);选择“宽度”分组框中工具按钮时,将所选择的宽度按钮的Tag值设为画笔宽度。添加方法是在事件窗口中分别将所选择的宽度按钮的Click事件方法设置为btnLine_Click。事件代码如下:Private void btnLine_Click(object sender,EventArgs e) button9.BackColor=Color.White; button10.BackColor=Color.White; button11.BackColor=Color.White; button12.BackColor=Color.White; button13.BackColor=Color.White; (Button)sender).BackColor=Color.Black; penWidth=Convert.ToInt32(Button)sender).Tag);选择“颜色”分组框中工具按钮时,将所选择的颜色按钮的背景色设置为Button14按钮的背景色,而Button14按钮的背景色作为画笔的颜色。事件代码如下:Private void btnColor_Click(object sender,EventArgs e) If(Button)sender).Text=”C”) If(colorDialog1.ShowDialog()=DialogResult.OK) button14.BackColor=colorDialog1.Color; else button14.BackColor=(Button)sender).BackColor; 添加一个方法,其功能是在画图过程中将终点设置在起点的右下角。方法代码如下:Private void Change_Point() Point pTemp=new Point(); If(pStart.XpEnd.Y) pTemp.Y=pStart.Y; pStart.Y=pEnd.Y; pEnd.Y=pTemp.Y; If(pStart.XpEnd.X) If(pStart.YpEnd.Y) pTemp=pStart; pStart=pEnd; pEnd=pTemp; 单击鼠标时记录起点坐标,其事件代码如下:Private void pictureBox1_MouseDown(object sender,MouseEventArgs e) If(e.Button=MouseButton.Left) pStart.X=e.X; pStart.Y=e.Y; 单击鼠标左键并移动时,如果选择的是铅笔则画出鼠标移动的轨迹;如果选择的是橡皮擦,则擦除鼠标移动的轨迹。事件代码如下:Private void pictureBox1_MouseMove(object sender,MouseEventArgs e) toolStripStatusLabel1.Text=”X:”+e.X.ToString()+”,Y:”+e.Y.ToString();If(e.Button=MouseButtons.Left) Switch(ChoiceGraph) Case(int )mySelected.Pencil: Pen pen1=new Pen(button14.BackColor, penWidth); pEnd.X=e.X; pEnd.Y=e.Y; q.DrawLine(pen1,pStart,pEnd); pStart=pEnd; break; case(int)mySelected.Eraser: Pen pen2=new Pen(Color.White,penWidth); pEnd.X=e.X; pEnd.Y=e.Y; g.DrawLine(pen2,pStart,pEnd); pStart=pEnd; break; default: break; 弹起鼠标左键时,根据所选择的画图工具画出图形。事件代码如下:Private void pictureBox1_MouseUp(object sender,MouseEventArgs e) If(e.Button=MouseButton.Left) pEnd.X=e.X; pEnd.Y=e.Y; Switch(ChoiceGraph) Case(int)mySelected.Line: Pen pen1=new Pen(button14.BackColor,penWidth); g.DrawLine(pen1,pStart,pEnd); break; Case(int)mySelected.Ellipse: Change_Point(); Pen pen2=new Pen(button14.BackColor,penWidth); g.DrawEllipse(pen2,pStart.X,pStart.Y,pEnd.X-pStart.X, pEnd.Y-pStart.Y); break; Case(int)mySelected.FillEllipse: Change_Point(); SolidBrush myBrush=new SolidBrush ( button14. BackColor ); Rectangle rec = new Rectangle ( pStart.X , pStart.
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- output-10-造纸工艺工程师(涂布)岗位面试问题及答案
- 电诈防范知识培训课件
- 高速车道基础知识培训课件
- 电解池工作原理
- 电芯电池基础知识培训
- 电脑钉钉直播显示课件
- 湖南省岳阳市汨罗市第一中学2025-2026学年高二上学期开学考试物理试卷
- 建设项目环境影响评价服务合同
- rap考试题及答案
- pcr考试试题及答案
- 2025至2030中国课外辅导行业发展研究与产业战略规划分析评估报告
- 纪念西路军课件
- 一年级书法教学设计方案
- 小朋友个人卫生课件
- 校园食堂安全知识培训课件
- 四川省2024年高等职业教育单独招生考试中职类语文试题及答案
- 《幼儿园中班第一学期家长会》 PPT课件
- 曳引式电梯施工方案
- 硅钢片的BH曲线数据
- 新人教版五年级上册数学教材分析(课堂PPT)
- 胸痹护理常规
评论
0/150
提交评论