




已阅读5页,还剩56页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
,图形应用程序开发,一、GDI+绘图基础二、绘图对象和方法三绘制艺术图和函数图四、绘制统计图和动画,大家都知道图形可以为应用程序的界面提高关注度和观赏性,现在各种应用程序多离不开图形、图像的显示、处理和操作。.NET开发环境提供了丰富的图形和图像处理方法,利用GDI+可以绘制各种图形、处理图像、绘制文本。本讲主要介绍绘制图形和文本。分三节:一、GDI+绘图基础二、常用绘图对象和方法三、绘制艺术图和函数图。,2,一、GDI+绘图基础,本节:通过典型案例了解图形的作用理解什么是GDI+?作用?通过简单的绘图例子了解绘图的坐标系、定位点、绘制图形的过程?,4,二、绘图对象和方法,5,通过上节绘制简单图形的过程中大家了解到在绘制图形中必须用到绘图对象和绘图方法。GDI+提供了丰富的绘图对象和方法供应用程序开发使用,绘制所需的各种图形。本节我们将介绍绘图中最常用画布、笔、刷字等绘图对象的作用、创建和使用;介绍绘制线、面和文字所使用的绘图方法及使用规则。,三绘制艺术图和函数图,艺术图是将线、面等图元根据一定的组合和重复形成具有美感效果的图案,应用面比较广函数图是根据给出的函数公式,如我们在数学课程学习中的积分图等进行绘制,以便更直观地图、文地显示和理解。绘制图形的首先要确定绘图的定位点、绘图的数据如何与屏幕像素进行相应的放大以便有效地显示,然后通过数学公式和编程技术来实现。本节介绍简单的艺术图和函数图的绘制,为以后在图形应用程序开发中打好一定的基础。,6,7,利用现成软件制作,如:AutoCAD绘制房屋平面图3DMAX制作家居装潢效果图,一幅画胜过千言万语Apicturesworthathousandwords,概述-典型图形案例,8,9,10,利用编程实现,模如VB.NET程序设计语言绘制:艺术图、函数图、统计图、动画等,11,艺术图,函数图,典型图形案例,12,递归-分形图,统计图,典型图形案例,13,动画,典型图形案例,GDI:GraphicsDeviceInterface图形设备接口,1.什么是GDI?,GDI+:对图形设备接口的一个扩展,功能更强。,作用:它接受Windows应用程序的绘图请求(绘图方法调用),并将绘图结果传给屏幕。,是类库:图形、文本、图像处理的功能,创建VB项目时自动引用命名空间:System.Drawing使用高级的图形功能需导入命名空间:ImportsSystem.Drawing.Drawing2D,画在哪里?,用什么画?,怎么画?,15,2.引例-绘制坐标轴和圆,绘画画布(Graphics对象),绘画工具(笔Pen、刷Brush、颜料Color、字体Font),绘画方法(线DrawX、面FillX、文字DrawString),目的:了解编程绘图过程,(1)准备工作建立绘图对象:画布、画笔、画刷变量声明、清屏(2)确定画图定位点、放大比例(实际值与绘图屏幕像素)(3)绘图方法:画坐标轴、画刻度、标记画圆、半径、文字(4)释放绘图对象绘图对象.Dispose(),DimgAsGraphics=Me.CreateGraphics()DimpAsPen=NewPen(Color.Red,2)DimbrAsBrush=NewSolidBrush(Color.Red)DimfAsFont=NewFont(黑体,14)Dimr!,x0!,y0!,x!,y!,xbl!,pi!,i%Me.Refresh(),16,画图的步骤:,(1)准备工作建立绘图对象:画布、画笔、画刷变量声明、清屏(2)确定画图定位点、放大比例(实际值与绘图屏幕像素)(3)绘图方法:画坐标轴、画刻度、标记画圆、半径、文字(4)释放绘图对象绘图对象.Dispose(),17,画图的步骤:,x0=Me.Width/2定位点窗口中央y0=Me.Height/2xbl=(Me.Width-40)/4放大比例半径1.5,(1)准备工作建立绘图对象:画布、画笔、画刷变量声明、清屏(2)确定画图定位点、放大比例(实际值与绘图屏幕像素)(3)绘图方法:画坐标轴、画刻度、标记画圆、半径、文字(4)释放绘图对象绘图对象.Dispose(),18,画图的步骤:,g.DrawLine(p,0,y0,Me.Width,y0)画轴g.DrawLine(P,x0,0,x0,Me.Height)画y轴Fori=-2To2画刻度和文字x=x0+i*xblg.DrawLine(p,x,y0-5,x,y0)画刻度g.DrawString(i,f,Brushes.Blue,x-10,y0+2)写文字Next,(1)准备工作建立绘图对象:画布、画笔、画刷变量声明、清屏(2)确定画图定位点、放大比例(实际值与绘图屏幕像素)(3)绘图方法:画坐标轴、画刻度、标记画圆、半径、文字(4)释放绘图对象绘图对象.Dispose(),画图的步骤:,r=1.5*xblg.DrawEllipse(p,x0-r,y0-r,2*r,2*r)画圆circle(x0,y0),rx=x0+r*Math.Cos(3.14/4)计算圆周点y=y0-r*Math.Sin(3.14/4)g.DrawLine(p,x0,y0,x,y)画半径g.DrawString(“r=1.5”,f,br,x,y)写文字,r=1.5,例11.1,坐标轴原点、定位点、坐标转换,20,(1)默认屏幕原点,(2)用户设置绘图定位点x0,y0,X0,y0,(x0,y0),x0=Me.Width/2y0=Me.Height/215计算圆周上位置:x,yx=x0+r*Cos(3.14/4)y=y0-r*Sin(3.14/4),21,x0=Me.Width/2y0=Me.Height/215TranslateTransform(X0,y0)计算圆周上位置:x,yx=r*Cos(3.14/4)y=-r*Sin(3.14/4),(3)利用坐标变换方法,21,(0,0),y0,(0,0,(-x0,-y0),x0,二、绘图对象和方法,22,绘制图形必须用到绘图对象和绘图方法,VB.NET中提供了丰富的绘图对象和方法供应用程序调用,来绘制各种图形。我们将介绍最常用的绘图对象和方法,让大家了解和熟悉在VB应用程序中绘制简单的图形的方法和过程。,23,常用的类,1.Graphics类,24,作用:确定在何处画图.可以是窗体、图片框、标签等控件对象,创建形式:对象.CreatGraphics(),DimgAsGraphics=Me.CreatGraphics()DimgAsGraphics=PictureBox1.CreatGraphics(),25,Graphics常用方法,2.Pen类,26,作用:画线的轮廓,可以设置笔的颜色、粗细,默认为实线。,声明对象时赋初值:,Dimpen1AsPen=NewPen(Color.Blue,3),赋值语句:,pen1.Color=Color.Redpen1.Width=10,其他线型:DashStyle属性设置点划线、带箭头线等,pen1.DashStyle=Drawing2D.DashStyle.DashDot,注意:其他线型要导入命名空间:ImportsSystem.Drawing.Drawing2D,3.Brush类,27,作用:画封闭面、写字,设置颜色。,Dimbrush1AsBrush=NewBrush(Color.Blue),Dimbrush1AsBrush=NewSolidBrush(Color.Blue),注意:除单色外其他类型要导入命名空间:ImportsSystem.Drawing.Drawing2D,注意:Brush是抽象类,只能使用它的派生类,Point(20,40),4.常用的结构,28,Size(150,120),Rectangle(20,40,150,120),Point(x,y),29,常用绘图方法,说明:有rect矩形区域,方法名前Draw改为Fill填充,参数pen改为brush画封闭面,FillPie(brush,rect,startangle,sweepangle),30,绘图方法例,Dimrect1AsRectangle=NewRectangle(100,50,60,60)g.DrawEllipse(pen1,rect1)画“头部”Dimrect2AsRectangle=NewRectangle(90,110,80,100)g.FillRectangle(brush1,rect2)填充“身体”g.DrawLine(pen1,60,80,90,150)画四肢g.DrawLine(pen1,200,80,170,150)g.DrawLine(pen1,110,210,110,290)g.DrawLine(pen1,150,210,150,290),绘图方法例,31,3.绘制文字,DrawString(string,font,brush,point)文字字体格式颜色起始点坐标,DimfAsNewFont(宋体,20)Dimbrush1AsNewSolidBrush(Color.Blue)g.DrawString(欢迎欢迎!,f,brush1,40,25),图形应用程序开发,三绘制艺术图和函数图,本节利用绘图对象和绘图方法绘制简单的艺术图和函数图。艺术图是将圆、线等图元根据一定的组合和重复形成具有美感效果的图案函数图是根据给出的公式绘制。这些图形的绘制都需要用到画布、笔、颜色和字体等对象,33,34,应用:广告、装饰、平面设计、安全印务实现:创意、数学公式、数组、循环结构等,关键数学公式:rr=5i+r|Cos(3a)|+2iSin(12a)x1=x0+rrCos(a)y1=y0-rrSin(a)0a2,绘制艺术图,正弦团花例,参数可调艺术图例,35,简单艺术图绘制,实现算法思想:绘制一个以(x0,y0)为圆心,半径为r的红色圆;圆周等分20份,以这20个等分点(x,y)为圆心,以半径r1绘制20个蓝色圆。,已知x0,y0,绘制圆:计算圆周的外接矩形左上角和半径,调用绘制椭圆方法:DrawEllipse(pen,rect),x0-r,y0-r,2r,2r,g.DrawEllipse(pen1,x0-r,y0-r,2*r,2*r),x0,y0,例,36,简单艺术图绘制,实现算法思想:绘制一个以(x0,y0)为圆心,半径为r的红色圆;圆周等分20份,以这20个等分点(x,y)为圆心,以半径r1绘制20个蓝色圆。,求圆周上点的坐标:,alf=3.14159/10Fori=1To20 x=x0+r*Cos(i*alf)y=y0-r*Sin(i*alf)g.DrawEllipse(p,x-r1,y-r1,2*r1,2*r1)Next,x-r1,y-r1,37,N边形金刚钻艺术图,实现思路:将圆心为x0,y0、半径为r的圆周上分为n个等分点,计算每点坐标值x(),y()利用二重循环每一点与其他n-1点两两连线。,n=Val(TextBox1.Text)Dimx%(n),y%(n),x0,y0 x0=PictureBox1.Width/2y0=PictureBox1.Height/2r=x0*0.9da=2*3.14159/nFori=1Ton计算每点位置x(i)=x0+r*Math.Cos(i*da)y(i)=y0-r*Math.Sin(i*da)Next,例,g.Clear(PictureBox1.BackColor)Fori=1Ton1画图Forj=i+1Tong.DrawLine(p,x(i),y(i),x(j),y(j)NextNext,思考给出公式绘制图形?,38,x=rr(1+Sin(k*)*Cos()y=rr(1+Sin(k*)*Sin(),02,思路:K值由文本框输入立体感效果,关键是将两个有角度差的花瓣间进行连线,图案形成参数方程,例:绘制K个花瓣的立体感图案,2绘制函数图实验,绘制Sin曲线,三种方法:,x1,y1,x2,y2,x2,y2,x1,y1,40,x,y,x,y,点方法圆心点DrawEllipse,直线法两点连线DrawLine,曲线法,计算存储各取样点,DrawCurve,给出函数公式,绘制函数图,例三角函数图,各种积分图形等。,41,两点连线法绘制y=sin(x)函数图,利用坐标平移方法实现,实现过程:初始:确定坐标原点(平移到x0,y0),计算x、y放大倍数,绘制坐标轴和刻度;循环前准备:计算函数的取样起始点,已知x1求得y1(注意纵坐标反向),循环体:求线段终点x2,y2,画直线x1,y1x2,y2终点作为新起点:x1=x2;y1=y2;,例,0,0,x0=w2:y0=h2xbl=(w-20)/154x比例ybl=h/3y比例g.TranslateTransform(x0,y0)g.DrawLine(p,-x0,0,x0,0)x轴g.DrawLine(p,0,-y0,0,y0),Fori=-7To7Step1x=i*xblg.DrawLine(p,x,-5,x,+5)g.DrawString(i,f,sb,x-5,0)Next,42,两点连线法绘制y=sin(x)函数图,实现过程:初始:确定坐标定位点,计算x、y放大倍数,绘制坐标轴和刻度;循环前准备:计算函数的取样起始点,已知x1求得y1(注意纵坐标反向),循环体:求线段终点x2,y2,画直线x1,y1x2,y2终点作为新起点:x1=x2;y1=y2;,例,x1=-6.28*xbly1=-(ybl*Math.Sin(-6.28)Forx=-6.28To6.28Step0.01x2=x*xbly2=-ybl*Math.Sin(x)g.DrawLine(p,x1,y1,x2,y2)x1=x2y1=y2Next,x1,y1,x2,y2,x2,y2,x1,y1,思考:如何对函数图形填充颜色?,g.DrawLine(p,x2,y2,x2,0),绘图小结,主要掌握画布、笔对象,利用DrawX方法画轮廓线理解绘图坐标原定、定位点、坐标平移定位点是在原默认坐标系下坐标平移原点位置改变实际函数值与屏幕像素点的关系,放大倍数,43,两者表示的公式区别,x=x0+r*Cos(3.14/4)y=y0-r*Sin(3.14/4),x=r*Cos(3.14/4)y=-r*Sin(3.14/4),以x0,y0为定位点,原点默认在窗体左上角,计算圆周上位置:x,y,执行g.TranslateTransform(x0,y0)原点平移到x0,y0处,窗体左上角为-x0,-y0,图形应用程序开发,四绘制统计图,统计图:类似Excel的图表功能,读取数据,绘制各种统计图,以便能更直观地显示数据。,45,46,读入图书销售数据,绘制饼图和直方图统计图。,从文本文件读入数据:书名、发行量,存放到2个数组xbook、xnum中;数组声明为窗体级变量,共享。利用DarwString方法显示读取的数据,“读入数据显示”功能,47,xbook$(2)xnum%(2),i=0FileOpen(1,data.txt,OpenMode.Input)DoWhileNotEOF(1)Input(1,xbook(i)Input(1,xnum(i)sum=sum+xnum(i)i=i+1LoopFileClose(1),读取数据,计算总和关键代码,48,xbook$(2)xnum%(2),在窗体显示数据g=Me.CreateGraphicsg.DrawString(教材发行情况,f,sb,50,20)Fori=0To2s=xname(i)&xvalue(i)&万册g.DrawString(s,f,sb,10,i*20+50)Next,绘制饼图思路,对销售书量以饼图显示,饼块以不同颜色显示以图例方式显示每种书占的百分比。,随机生成每块饼颜色,即格式刷颜色计算单位值占角度bl=360/sum,起始角a1=0在循环体内画每块饼计算每块饼占角度a=bl*册数g.FillPie(br(i),rect,a1,a)为下一块饼准备,即求下一个起始角a1=a1+a,a1,a,a1,a,“饼图”功能,50,关键代码,对格式刷进行颜色设置DimclrAsColorFori=0To2clr=Color.FromArgb(255*Rnd(),255*Rnd(),255*Rnd()sb(i)=NewSolidBrush(clr)Nexti,绘制每块饼a1=0a1扇形的起始角bl=360/sum单位值占角度Fori=0To2a=xnum(i)*bl求每种教材所占角度g.FillPie(sb(i),rect,a1,a)画扇形a1=a1+a下一个扇形的起始角Next,a1,a,a1,a,51,绘制图例关键代码,Fori=0To2g.FillRectangle(sb(i),rect2)绘制图例矩形s=Format(xnum(i)*100/sum,”0.00”)&“%”g.DrawString(xname(i)&s,f,sb(i),rect2.X+10,rect2.Y)图例文字rect2.Y=rect2.Y+14下一个图例Y轴位置Next,52,求数据最大值max,使得直方图切当地在容器内显示计算单位值占高度比例:bl=h/(max+10)坐标平移g.TranslateTransform(0,h)画坐标轴循环体画各矩形块计算每块x1、y1值位置,其中:x1等分,y1=数值*bl调用函数:g.FillRectangle(sb,x1,-y1,25,y1),x1,-y1,y1,“直方图”功能,绘制直方图图思路,53,0,h,w,0,x1,-y1,在绘图时要注意y坐标是反向的另一要注意的是放大比例:横向、纵向都要考虑,y1,0,0,w,0,0,0,0,-h,g.TranslateTransform(0,h),g.FillRectangle(sb,x1,-y1,25,y1),思考:不用坐标平移代码绘制矩形块,上面代码如何改写?,54,程序11-12,bl=h/(m+10)计算放大倍数Fori=0To2x1=(2*i)*25+10矩形块在X上的坐标位置,每块宽25,间距25y1=Val(xnum(i)*bl矩形块在Y上的坐标位置g.FillRectangl
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 专题范文幼儿园晨检制度10篇
- 美国高一数学试卷
- 城市公园改造提升项目在2025年的社会稳定风险评估与城市生态平衡保护报告
- 环境监测水质采样课件
- 心理健康情感养生知识培训课件
- 泌阳县小升初数学试卷
- 生产车间安全培训教程
- 2025年物业管理师考试住宅小区物业服务行业行业竞争试题
- 2025年美容师(初级)职业技能鉴定实操试卷(美容美唇篇)
- 田忌赛马优课教学课件
- GB/T 35267.4-2025清洗消毒器第4部分:内镜清洗消毒器
- 中职生单招语文必背古诗文(35篇)
- 新版2025心肺复苏术指南
- DB45T 1056-2014 土地整治工程 第2部分:质量检验与评定规程
- 2025年文明行车科目一试题及答案
- 电商快递合作协议样本
- 《朝花夕拾》名著导读+知识点+习题集合
- 柴油发电机组操作培训
- 《新能源材料与器件专业导论》课程教学大纲
- 养老院文娱活动意外应急预案
- 老年护理学试题库(含参考答案)
评论
0/150
提交评论