




已阅读5页,还剩41页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1,第11章图形应用程序开发,11.1GDI+绘图基础11.2图形绘制11.3综合应用11.4图像处理,2,本章学习目标,通过本章的学习,能够灵活运用GDI+提供的功能绘制图形。学习要点:(1)创建Graphics对象,使用GDI+绘图。(2)使用画笔和填充工具,学习描述对象的颜色和透明度的Color结构绘制各种图形。(3)使用图像功能进行翻转、缩放、剪切等图像处理。,3,11.1GDI+基础知识,图形设备接口(GDI)是一个可执行程序,它接受Windows应用程序的绘图请求(表现为GDI的函数调用),并将它们传给相应的设备驱动程序。GDI+是对图形设备接口的一个扩展,它所提供的类可用于创建二维矢量图形、操纵字体以及插入图像。,4,11.1GDI+基础知识,GDI+在System.Drawing.Dll程序集中定义,它的相关类都分布在以下命令空间:System.Drawing:提供GDI+基本图形功能System.Drawing2D:提供高级的二维和矢量图形功能。SystemImaging:提供GDI+图像处理功能System.Drawing.Text:字体处理功能,5,任务1:,绘制一个椭圆和一行文字,任务分析:对图形图像进行编程,就是构造画布、建立画笔(Pen)、画刷等。构造画布Graphics类封装了GDI的画布,绘图时所使用的绘图画布就是Graphics类的实例。在窗体上构造画布对象g:DimgAsSystem.Drawing.Graphicsg=Me.CreateGraphics,6,任务1:,绘制一个椭圆和一行文字,建立画笔绘图工具需要创建画笔等用户对象来绘制线条和形状。构造一支线宽为2的蓝色画笔DimpAsPen=NewPen(Color.Blue,2),7,任务1:,绘制一个椭圆和一行文字,调用绘图函数绘图在GDI+中用椭圆的外切矩形来定义椭圆的大小,并确定绘画位置。将画笔作为参数传递给函数DrawEllipse,画出椭圆g.DrawEllipse(p,10,10,100,60),8,任务1:,要在窗体上呈现文本,需要声明字体对象和画刷,调用DrawString函数在指定位置输出文字。构造红色画刷DimsbAsBresh=NewSolidBresh(Color.Red)构造字体对象fDimfAsNewFont(宋体,10,FontStyle.Bold)g.DrawString(GDI+绘图,f,sb,50,35),9,在对象上绘制图形过程小结,构造画布用对象的CreateGraphics()方法构造Graphics类的实例:Dim画布AsGraphics画布=控件对象.CreateGraphics()建立绘图工具(画笔、画刷、字体等)调用绘图方法绘制图形调用Dispose方法释放绘图对象,10,11.1GDI+基础知识,GDI+在System.Drawing命名空间中定义,包含了图形处理的许多类,图形开发中最常用的类:,11,11.1.2坐标系,在GDI+中,对象坐标系是以像素(屏幕上的亮点)为单位,每个像素都有一个坐标点与之对应。默认的坐标原点为对象的左上角,横向向右为X轴的正向,纵向向下为Y轴的正向。,在绘制数学函数y=f(x)的图形时,要使所画的图产生与数学坐标系相同的效果,则需要在默认坐标的基础上进行坐标的变换,例如旋转,平移等。,12,Graphice对象坐标变换方法,13,11.2图形绘制,11.2.1线条与形状1画笔对象Pen在GDI+中,Pen对象在画布上处理图形的轮廓部分。通过使用Pen类可以设置所画线条的颜色、线宽和样式。创建画笔的格式为:Dim画笔对象AsNewPen(颜色,线宽)例DimpAsNewPen(Color.Red,5)构造线宽5象素的红色画笔注意引用System.Drawing.Drawing2D名称空间,14,画笔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)在画布上画点划线,15,常用绘图函数,16,常用绘图函数,17,范例,例11.4在窗体上按下对应的按钮,绘制圆柱、矩形、扇形、多边形和曲线。,18,范例设计分析,由于要在多个事件中使用画笔和画布,故在通用处声明画布和画笔对象圆柱可画两个椭圆并用直线连接,如果矩形区域为(a,b,w,h),则椭圆在X轴方向上的顶点坐标为(a,b+h/2)和(a+w,b+h/2)多边形和曲线只要给出一系列的点,调用对应Draw绘图函数即可,19,11.2.2图形填充,1画刷画刷Brush主要用于封闭图形的填充。不能直接将Brush类实例化,而只能实例化它的子类对象。常用的Brush的子类有:单色刷SolidBrush纹理刷TextureBrush渐变刷LinearGradientBrush网格刷HatchBrush,20,11.2.2图形填充,(1)单色刷只能用一种颜色填充区域DimsbAsSolidBrush=NewSolidBrush(Color.Blue)声明了一个蓝色的单色刷sb2纹理刷用一个图片来填充图形DimtbAsNewTextureBrush(NewBitmap(“图片”)例:使用图片创建的纹理刷tbDimtbAsNewTextureBrush(NewBitmap(if.gif),21,画刷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,22,画刷范例,例11.5演示渐变刷、网格刷、纹理刷三种画刷的效果,23,绘制扇形例,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),24,11.2.3字体Font,字体Font类决定文本的字体格式(字体类型、大小以及风格)。用Font类的构造函数建立一种字体,需要3个参数:Dim字体对象AsNewFont(字体,大小,样式)例:DimfAsNewFont(仿宋,20,FontStyle.Bold)构建字体工具f,书写20象素的仿宋粗体字,25,绘制文字,Graphics对象.DrawString(string,font,brush,point)其中,string为要绘制的文字内容;font为字体工具;brush为画刷;point为起点坐标。例11.7利用DrawString函数,制作黄色到蓝色的渐变文字,26,例11.8在窗体上输出阴影文字效果。阴影效果其实质是将同一文本内容显示两遍,利用位置的相错和颜色的变化来实现。以下代码将产生阴影文字效果:DimgAsGraphicsg=Me.CreateGraphicsDimfAsNewFont(宋体,50,FontStyle.Bold)Dimsb1AsNewSolidBrush(Color.Black)构造画刷Dimsb2AsNewSolidBrush(Color.FromArgb(100,Color.Black)构造画刷sb2g.DrawString(阴影效果,f,sb2,33,43)g.DrawString(阴影效果,f,sb1,30,40),27,11.3应用,例11.10根据参数方程x=50(1+Sin(4*a)*Cos(a)y=50(1+Sin(4*a)*Sin(a)绘制立体四瓣花形图案。,28,绘制立体四瓣花形图案,设计分析直接按参数方程x=50(1+Sin(4*a)*Cos(a),y=50(1+Sin(4*a)*Sin(a)的坐标(x,y)绘制的曲线是平面的。要产生立体图案,可以按方程产生两个点的坐标,用此线段作为绘图的基本元素,将这些线段组合起来,就可得到所希望的结果。,29,11.3应用,例11.11在窗体上绘制圆锥体和用矩形框叠加在按钮上产生艺术图。,30,绘制圆锥体和艺术图,设计分析圆锥体可由三角形和椭圆组合而成。使用不同的渐变刷对三角形和椭圆进行填充,产生立体效果。RotateTransform()方法对坐标系旋转,每次都从坐标系当前状态出发。例如,执行两次RotateTransform(10),所绘的图旋转20度。在循环中将坐标系旋转36次,每次画一个矩形。,31,11.3应用,例11.12从文件中读入数据,并用这些数据绘制统计图。,32,绘制统计图,设计分析文件读入顺序文件可使用FileOpen方法打开,然后用Input语句将数据读入到数组。销售比例计算将三种教材的发行量之和去除某种教材的发行量,可得到该教材的销售比例。用格式函数Format(比例值*100,#.#)&%显示百分比。,33,绘制统计图,饼图绘制设置绘图的矩形区域位于图形框中央,就可将饼图圆心定在图形框的中心。将每种教材的销售比例乘360,转为角度,第一个扇形顺时针(0,),以后每个扇形的起始角为前一个扇形的结束角。,34,绘制统计图,直方图绘制需要将坐标原点平移到对象的左下角,用对象允许作图的高度与最大销售量之比计算出绘图单位放大倍数bl,销售量*bl就是条图的高度,将其乘-1,就是在垂直方向绘图的坐标点;条图的宽度可以事先给出,也可动态分配,本例为25象素点。,35,11.4图像处理,任务2:加载和显示图片,36,11.4图像处理,加载图像文件中的图像并将其显示在屏幕上,则需要Bitmap对象和Graphics对象。Bitmap类支持BMP、GIF、JPEG、PNG和TIFF等多种文件格式。在创建Bitmap对象之后,使用Graphics对象的DrawImage函数,就可以显示图像文件中的图像。下面的代码从JPEG文件创建Bitmap对象,然后绘制该图像。,37,11.4图像处理,DimpicAsBitmap=NewBitmap(fruit.jpg)根据图像文件声明Bitmap对象DimgAsGraphics=Me.CreateGraphicsg.DrawImage(pic1,5,5,300,200)从(5,5)开始绘制300200的图像,38,11.4图像处理,任务3:裁切和缩放图像,39,裁切和缩放图像,设计分析DrawImage方法通过源矩形从原始图像裁切部分图像,根据目标矩形的宽度和高度与源矩形的宽度和高度之比就可对图像进行缩放。设置DrawImage函数不同的参数,可实现裁切和缩放图像。,40,裁切和缩放图像,使用格式:DrawImage(图像对象,起始点x,y,宽,高)参数寬度与高度,可控制图片的放大与缩小。当寬度与高度为负值时,可实现图像在水平或垂直方向翻转。DrawImage(图像对象,目标矩形,源矩形,GraphicsUnit.Pixel)源矩形定义了图像对象将被读取的区域,目标矩形对被裁切到的图像重新绘制,GraphicsUnit.Pixel指定绘制单位为像素。,41,裁切和缩放图像,使用格式:DrawImage(图像对象,起始点x,y,宽,高)参数寬度与高度,可控制图片的放大与缩小。当寬度与高度为负值时,可实现图像在水平或垂直方向翻转。DrawImage(图像对象,目标矩形,源矩形,GraphicsUnit.Pixel)源矩形定义了图像对象将被读取的区域,目标矩形对被裁切到的图像重新绘制,GraphicsUnit.Pixel指定绘制单位为像素。,42,11.4图像处理,任务4:旋转、反射和扭曲图像,43,旋转、反射和扭曲图像,使用图像对象的RotateFlip方法翻转或者同时旋转和翻转图像。其格式是:图像对象.RotateFlip(RotateFlipType.成员),44,本章小节,GDI+图形处理类包含在System.Drawing命名空间使用GDI+在对象上绘制图形过程构造画布建立绘图工具(画笔、画刷、字体等)调用绘图方法绘制图形调用Dispose方法释放绘图对象绘图工具画笔Pen、画刷Brush、字体Font图形绘制通过绘图
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 双角平分线课件
- 双节期间安全生产培训课件
- 2025银行结构面试题目及答案
- 综合医院急诊流程优化方案
- 叉车司机安全技术培训课件
- 工程赶工期高效管理措施方案报告
- 叉车使用和安全培训内容课件
- 制造业工业互联网应用推广方案
- 小学除法知识点讲解及习题集
- 建筑工程监理工作报告范文
- 《公路工程量计算》课件
- 医院建筑综合设计与布局优化
- 阴道镜项目质量管理方案
- 边坡工程第3章 边坡工程地质勘察
- 索思医疗卓越产品系列穿戴式动态心电监测产品
- 全国医药行业特有职业技能竞赛中药调剂员赛项备赛试题库(含答案)
- 中建基础设施公司“主要领导讲质量”
- 房屋交易诚意金合同范本模板
- 《毛泽东思想的形成与发展》参考课件3
- GB/T 4706.95-2024家用和类似用途电器的安全第95部分:商用电动抽油烟机的特殊要求
- 脑梗死知识讲解模板
评论
0/150
提交评论