VBNET11VBNET11newnew_第1页
VBNET11VBNET11newnew_第2页
VBNET11VBNET11newnew_第3页
VBNET11VBNET11newnew_第4页
VBNET11VBNET11newnew_第5页
已阅读5页,还剩37页未读 继续免费阅读

下载本文档

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

文档简介

1,第11章图形应用程序开发,11.1GDI+绘图基础11.2图形绘制11.3综合应用11.4图像处理,2,1.引例11.1,已知y=ax2,画出如下的函数图形:,画图的步骤:1.准备工作建立绘图对象:画布、画笔、画刷2.绘图方法画坐标轴、刻度、标记3.利用函数已知x、获得y,画线4.释放绘图对象,11.1GDI+基础知识,3,构造画布、建立绘图工具(画笔、画刷、字体等)用对象的CreateGraphics()方法构造Graphics类的实例:DimgAsGraphics=控件对象.CreateGraphics()画布DimpAsPen=NewPen(Color.Blue,2)画线DimsbAsBrush=NewSolidBrush(Color.Blue)写字颜色调用绘图方法绘制图形利用DrawLine方法画坐标轴、刻度利用DrawString方法绘制刻度标记和坐标轴标记通过函数计算和DrawLine绘线调用Dispose方法释放绘图对象,4,关键:屏幕原点,绘图原点Y轴方向问题y取负值函数值缩放,能在规定的范围内绘制像素、刻度、函数值,(x0,y0),5,2.什么是GDI?GDI+?,CDI:图形设备接口(GDI)是一个可执行程序,它接受Windows应用程序的绘图请求(表现为GDI的函数调用),并将它们传给相应的设备驱动程序。GDI+:是对图形设备接口的一个扩展,它所提供的类可用于创建二维矢量图形、操纵字体以及插入图像。,6,3.图形开发中最常用的类,7,1.常用绘图函数,11.2绘制函数和方法,说明:1.除DrawLine外,都要有Rectangle矩形区(x0,y0,w,h)2.填空Fill,用笔改为刷例FillPie(brush,startangle,sweepangle),(X0,y0),h,w,8,2.Graphics常用方法,9,例11.4在窗体上按下对应的按钮,绘制圆柱、矩形、扇形、多边形和曲线。,10,11.3字体和绘制文字,字体Font类决定文本的字体格式Dim字体对象AsNewFont(字体,大小,样式)例:DimfAsNewFont(仿宋,20,FontStyle.Bold)构建字体工具f,书写20象素的仿宋粗体字,1.字体Font,11,2.绘制文字,DrawString(string,font,brush,point)文字字体格式颜色起点坐标11.8利用DrawString函数显示阴影效果文字,方法:1.两个字符串位置不同,颜色不同2.灰色阴影设置画刷SolidBrush(Color.FromArgb(透明度,Color.Black),12,1.绘制艺术图实验11-1,绘制算法思想:(1)将圆心为x0,y0、半径为r的圆周上,分为n个等分点为圆心x,y,以半径r1绘制n个圆。(2)已知圆心x0,y0,求该圆周上x,y点(见右)的方程为:x=x0+r*cos()y=y0+r*sin()(3)利用绘园方法,02,g.DrawEllipse(p,x-r,y-r,2*r,2*r)Circle(x,y),r,11.4应用,13,2.绘制函数图实验二,绘制Sin曲线1.声明绘图对象:画布、画笔、画刷、字体2.计算x轴比例(像素、弧度)、绘制坐标轴和刻度3.通过函数绘制SIN曲线y轴放大倍数、y轴方向与数值关系进一步思考:1.x、y轴写轴标记?2.若要填充颜色如何实现?,14,3.绘制统计图,例11.12从文件中读入数据,并用这些数据绘制统计图。,15,统计设计思想,文件读入顺序文件可使用FileOpen方法打开,然后用Input语句将数据读入到数组。销售比例计算某教材的发行量/将发行量之和显示百分比Format(比例值*100,#.#)&%,16,绘制饼图思想,计算总和,计算单位值占角度360/sum设置起始角度利用循环计算每块饼占角度a,调用函数:g.FillPie(br(i),rect,a1,a)求下一个起始角:a1=a1+a,x,y,a1,a,17,绘制直方图思想,画坐标轴求数据最大值,计算单位值占高度比例:h/max利用循环计算每块x、y值位置,其中:x等分,y数值乘以比例调用函数:g.FillRectangle(sb,x1,h-y,25,y),X1,h-y,y,18,本章小节,GDI+图形处理类包含在System.Drawing命名空间使用GDI+在对象上绘制图形过程构造画布建立绘图工具(画笔、画刷、字体等)调用绘图方法绘制图形调用Dispose方法释放绘图对象绘图工具画笔Pen、画刷Brush、字体Font图形绘制通过绘图函数来完成。以Draw为前缀的函数用于绘制图形,以Fill为前缀的函数用于区域填充掌握函数图、艺术图、统计图绘制,19,11.4自主学习-图像处理,任务2:加载和显示图片,20,11.4图像处理,加载图像文件中的图像并将其显示在屏幕上,则需要Bitmap对象和Graphics对象。Bitmap类支持BMP、GIF、JPEG、PNG和TIFF等多种文件格式。在创建Bitmap对象之后,使用Graphics对象的DrawImage函数,就可以显示图像文件中的图像。下面的代码从JPEG文件创建Bitmap对象,然后绘制该图像。,21,11.4图像处理,DimpicAsBitmap=NewBitmap(fruit.jpg)根据图像文件声明Bitmap对象DimgAsGraphics=Me.CreateGraphicsg.DrawImage(pic1,5,5,300,200)从(5,5)开始绘制300200的图像,22,11.4图像处理,任务3:裁切和缩放图像,23,裁切和缩放图像,设计分析DrawImage方法通过源矩形从原始图像裁切部分图像,根据目标矩形的宽度和高度与源矩形的宽度和高度之比就可对图像进行缩放。设置DrawImage函数不同的参数,可实现裁切和缩放图像。,24,裁切和缩放图像,使用格式:DrawImage(图像对象,起始点x,y,宽,高)参数寬度与高度,可控制图片的放大与缩小。当寬度与高度为负值时,可实现图像在水平或垂直方向翻转。DrawImage(图像对象,目标矩形,源矩形,GraphicsUnit.Pixel)源矩形定义了图像对象将被读取的区域,目标矩形对被裁切到的图像重新绘制,GraphicsUnit.Pixel指定绘制单位为像素。,25,裁切和缩放图像,使用格式:DrawImage(图像对象,起始点x,y,宽,高)参数寬度与高度,可控制图片的放大与缩小。当寬度与高度为负值时,可实现图像在水平或垂直方向翻转。DrawImage(图像对象,目标矩形,源矩形,GraphicsUnit.Pixel)源矩形定义了图像对象将被读取的区域,目标矩形对被裁切到的图像重新绘制,GraphicsUnit.Pixel指定绘制单位为像素。,26,11.4图像处理,任务4:旋转、反射和扭曲图像,27,旋转、反射和扭曲图像,使用图像对象的RotateFlip方法翻转或者同时旋转和翻转图像。其格式是:图像对象.RotateFlip(RotateFlipType.成员),28,本章小节,GDI+图形处理类包含在System.Drawing命名空间使用GDI+在对象上绘制图形过程构造画布建立绘图工具(画笔、画刷、字体等)调用绘图方法绘制图形调用Dispose方法释放绘图对象绘图工具画笔Pen、画刷Brush、字体Font图形绘制通过绘图函数来完成。以Draw为前缀的函数用于绘制图形,以Fill为前缀的函数用于区域填充,29,思考题,1.简述GDI+的内容及其包含的命名空间,System.Drawing命名空间中主要包含哪些类?各类的主要功能是什么?2.简述GDI+绘制图形的基本步骤。3.怎样用Alpha通道淡化颜色?4.怎样绘制带有箭头的X轴?5.怎样绘制圆、椭圆、圆弧和扇形?6.怎样在图形中绘制文字?,30,思考题,6.怎样在图形中绘制文字?7.如何使用渐变刷、网格刷、纹理刷填充文字?8.绘一圓弧其终止角度为正数时其绘图方向是什么?9在GDI+中如何实现坐标变换?10简述DrawImage函数处理图像的方法。,31,11.1.2坐标系,默认坐标系,在绘制数学函数y=f(x)的图形时,一般两种处理方式:1.进行坐标的变换,例如旋转,平移等。2.设置原点坐标x0、y0,直接进行x=x0+,32,Graphice对象坐标变换方法,33,画笔Pen,例11.3用画笔画线DimgAsGraphics声明Graphicsg=Me.CreateGraphics构造画布gDimpAsNewPen(Color.Red,5)5象素的红色画笔p.SetLineCap(LineCap.Flat,LineCap.ArrowAnchor,DashCap.Flat)设置直线起终端的样式g.DrawLine(p,50,10,300,10)在画布上画有箭头的线p.EndCap=LineCap.Flat取消画笔终止端的样式p.DashStyle=DashStyle.DashDot设置点划线样式p.Width=2设置线宽2象素g.DrawLine(p,50,30,300,30)在画布上画点划线,34,11.2.2图形填充,1画刷画刷Brush主要用于封闭图形的填充。不能直接将Brush类实例化,而只能实例化它的子类对象。常用的Brush的子类有:单色刷SolidBrush纹理刷TextureBrush渐变刷LinearGradientBrush网格刷HatchBrush,35,11.2.2图形填充,(1)单色刷只能用一种颜色填充区域DimsbAsSolidBrush=NewSolidBrush(Color.Blue)声明了一个蓝色的单色刷sb2纹理刷用一个图片来填充图形DimtbAsNewTextureBrush(NewBitmap(“图片”)例:使用图片创建的纹理刷tbDimtbAsNewTextureBrush(NewBitmap(if.gif),36,画刷Brush,3渐变刷用线性渐变色来填充图形DimlbAsNewLinearGradientBrush(Point1,Point2,Color1,Color2)参数Point1、Point2构成一个矩形区域,Color1、Color2分别设置渐变的起始点颜色和终点颜色。例DimlbAsNewLinearGradientBrush(pt1,pt2,Color.Blue,Color.White)渐变刷lb4网格刷根据条纹模式来设置填充类型DimhbAsNewHatchBrush(条纹类型,前景色,背景色)例DimhbAsNewHatchBrush(HatchStyle.DarkHorizontal,Color.Blue,Color.Yellow)网格刷hb,37,画刷范例,例11.5演示渐变刷、网格刷、纹理刷三种画刷的效果,38,绘制扇形例,DimgAsGraphicsg=Me.CreateGraphicsDimpAsNewPen(Color.Blue,4)画笔DimrectAsNewRectangle(5,5,180,180)g.DrawPie(p,rect,-45,-135)DimhbAsNewHatchBrush(HatchStyle.Cross,Color.Blue,Color.Yellow)网格刷g.FillPie(hb,rect,-45,-135),39,11.2.3字体Font,字体Font类决定文本的字体格式(字体类型、大小以及风格)。用Font类的构造函数建立一种字体,需要3个参数:Dim字体对象AsNewFont(字体,大小,样式)例:DimfAsNewFont(仿宋,20,FontStyle.Bold)构建字体工具f,书写20象素的仿宋粗体字,40,本章学习目标,通过本章的学习,能够灵活运用GDI+提供的功能绘制图形。学习要点:(1)创建Graphics对象,使用GDI+绘图。(2)使用画笔和填充工具,学习描述对象的颜色和透明度的Color结构绘制各种图形。(3)使用图像功能进行翻转、缩放、剪切等图像处理。,41,11.1GDI+基础知识,GDI+在System.Drawing.Dll程序集中定义,它的相关类都分布在以下命令空间:System.Drawing:提供GDI+基本图形功能System.Drawing2D:提供高级的二维和矢量图形功能。SystemImaging:提供GDI+图像处理功能System.Drawing.Text:字体处理功能,42,例11.8在窗体上输出阴影文字效果。阴影效

温馨提示

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

评论

0/150

提交评论