第15章.图形图像编程

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

第15章图形图像编程在Web应用中,良好的图形图像的运用能够提升网站的友好度和易用性。.NETFramework提供了图形图像编程的方法,开发人员可以运用图形图像编程技术进行良好的Web应用中图形图像布局和编程,也可以通过GDI+实现类似Photoshop的功能。15.1图形图像基础使用图形图像可以进行良好的页面布局,在现有的很多Web应用中,其应用程序的页面布局经常需要使用图像,这样能够让页面整体效果更加友好。用户会对界面友好的应用程序印象深刻从而会进行回访。ASP.NET不仅能够进行图形图像显示,还能够使用GDI+进行图形图像的绘制。15.1.1图像布局在页面布局中,很多设计人员喜欢使用CSS设计,这样能够简化页面代码,将页面布局代码和页面代码相分离,从而提高了维护性。虽然随着技术的发展,越来越多的动态生成页面布局,以及动态生成图像的方法也越来越多的被开发人员和设计人员所认知,但是开发人员和设计人员还是比较喜欢使用CSS和IMG标签进行页面布局,这是因为CSS和IMG标签都比较简单,可以说是“轻量级”的,即不需要页面进行逻辑处理也不需要动态生成。1.IMG标签IMG标签是图像标签,IMG标签属于HTML控件,在Web应用中可以看到在页面中包含大量的IMG标签用于图形图像显示,示例代码如下所示。bodyimgsrc=autom.jpg//body上述代码显式了一个名为autom的JPG图像到页面中,如图15-1所示。392图15-1插入图片使用IMG标签能够轻松的为网页添加图片,IMG标签包括以下常用属性:Src:图片的地址,可以是图片的相对地址也可以是绝对地址。Width:设定图片的宽度。Height:设定图片的高度。Alt:当图片显示不了时提示的字符。Border:图片的边框的宽度。Align:图片的周片文字的对齐方式。Title:当鼠标放在图片上出现的提示字符。开发人员能够通过编写Width和Height属性进行图像的大小控制,也可以编写Alt属性当图片显示不了时进行提示,如图15-2和图15-3所示。图15-2Width属性图15-3Alt属性2.CSS通过CSS能够使用图像进行页面布局和样式控制。当需要使背景呈现渐变效果时,无需使用JavaScript进行控制,可以直接使用CSS和图像进行搭配使用即可。CSS背景属性包括:背景颜色属性(background-color):该属性为HTML元素设定背景颜色。背景图片属性(background-image):该属性为HTML元素设定背景图片。背景重复属性(background-repeat):该属性和background-image属性连在一起使用,决定背景图片是否重复。如果只设置background-image属性,没设置background-repeat属性,在缺省状态下,图片既x轴重复,又y轴重复。背景附着属性(background-attachment):该属性和background-image属性连在一起使用,决定图片是跟随内容滚动,还是固定不动。393背景位置属性(background-position):该属性和background-image属性连在一起使用,决定了背景图片的最初位置。背景属性(background):该属性是设置背景相关属性的一种快捷的综合写法。为了方便进行页面背景布局,可以使用CSS背景属性,示例代码如下所示。bodystyle=background:#6094d7url('bg.jpg')repeat-x;divstyle=width:800px;border:1pxsolid#333333;margin:0pxauto;background:white编写内容/div/body上述代码将BODY标签样式编写为背景颜色为#6094d7、背景图片编写为bg.jpg并且背景图片按照x轴重复。在body标签下方包含一个DIV标签,该标签作为主样式进行内容编写,编写内容后如图15-4所示。图15-4使用图形进行布局3.JavaScript进行图像编程HTML图像控件支持JavaScript进行图像操作,可以为图像控件进行事件处理,JavaScript代码如下所示。scripttype=text/javascriptfunctioncut(){varpic=document.getElementById(pic1)//获取ID为pic1的图片的属性pic.width=100;//设置图片的宽度pic.height=100;//设置图片的高度}/script上述代码获取图片ID为pic1的图片属性,当触发该事件后,ID为pic1的图片的宽度和高度将变为100。为了让图片被单击时触发该事件,则应该在IMG标签中声明该事件,图片相应的代码如下所示。imgalt=height=323src=autom.jpgwidth=500onclick=cut()id=pic1/上述代码定义了事件onclick并定义了图片id为pic1,运行后如图15-5和图15-6所示。394图15-5原始图片图15-6触发JavaScript事件后使用IMG标签进行图形图像编程是非常简单的方法。IMG标签和CSS配合能够进行页面布局,IMG标签和JavaScript进行配合能够进行图形图像的处理,所以IMG标签是非常容易被学习和使用的。在Web应用开发中,大量的IMG被使用也说明IMG标签是一种高效率、门槛低的图形图像编程方法。15.1.2GDI+简介虽然通过IMG标签和CSS、JavaScript相配合能够进行图形图像开发,但是其功能有限,并不能够进行高级的图形图像开发。高级的图形图像开发有点类似与Photoshop中图形处理,在ASP.NET中,可以使用强大的GDI+进行图形图像开发,实现类似Photoshop中图形处理的功能。GDI+是WindowsXP中的一个子系统,它主要负责在显示屏幕和打印设备输出有关信息,它是一组通过C++类实现的应用程序编程接口。GDI+的前身是GDI,在C++应用程序开发中,C++开发人员经常需要使用GDI进行窗口的绘制与重绘,在Vista操作系统之后的操作系统中,微软对图形图像编程进行了更新,在Vista等系统中,大量的使用了半透明、渐变、边缘模糊化等效果,这就要求在编程中强化图形图像渲染,如图15-7所示。395图15-7Vista特效为了适应更高的用户要求和用户体验的要求,微软对GDI进行了升级,就成为GDI+。GDI+不仅能够在C++开发当中使用,也能够在.NET中使用GDI+强大的绘图效果。GDI+相比与GDI,进行了一些加强,这些加强功能如下所示。渐变的画刷(GradientBrushes):GDI+允许开发人员使用渐变的画刷来绘制线条、图形以及外观。基数样条函数(CardinalSplines):GDI+支持基数样条函数而GDI不支持,基数样条能够防止锯齿的出现,使得窗口以及图形的绘制能够平滑过渡。持久路径对象(PersistentPathObjects):在GDI中,绘制路径在窗口更改需要通过重绘来保持图形的持久化,而在GDI+中,可以通过创建对个对象来持久化。变形和矩阵对象(Transformations&MatrixObject):GDI+提供了强大的矩阵对象,开发人员可以通过矩阵对象进行图形的翻转、平移和缩放。可伸缩区域(ScalableRegions):GDI+允许在一定的范围内进行任何图形变换。GDI+不仅包括这些新特性,还包括混合以及等多种图像类型支持等特性。ASP.NET相对于ASP的强大之处就在于ASP.NET可以使用GDI+进行图形图像编程,实现不同的Web应用功能。15.1.3绘制线条示例通过GDI+能够在Web应用中绘制线条,如果需要使用GDI+,则首先需要引用命名空间System.Drawing,示例代码如下所示。usingSystem.Drawing;//使用绘图命名空间使用了命名空间后,就能够使用System.Drawing中的方法进行线条绘制,示例代码如下所示。protectedvoidPage_Load(objectsender,EventArgse){BitmapMyImage=newBitmap(400,400);//创建Bitmap对象Graphicsgr=Graphics.FromImage(MyImage);//创建绘图对象Penpen=newPen(Color.Green,10);//创建画笔对象gr.Clear(Color.WhiteSmoke);//格式化画布gr.DrawLine(pen,50,200,400,20);//绘制直线MyImage.Save(Response.OutputStream,System.Drawing.Imaging.ImageFormat.Jpeg);//输出MyImage.Dispose();//释放对象gr.Dispose();}上述代码绘制了使用GDI+的Graphice类的对象进行线条的绘制,当页面被载入时则会开始绘制线条。当线条开始绘制时,首先需要创建一个Bitmap对象,Bitmap对象处理由像素定义的图像对象,示例代码如下所示。BitmapMyImage=newBitmap(400,400);//创建Bitmap对象上述代码创建了一个Bitmap对象并定义该对象区域为400*400,Bitmap就像画布。Graphice对象能够在该区域内绘制图形图像,示例代码如下所示。Graphicsgr=Graphics.FromImage(MyImage);//创建绘图对象定义了Graphice对象后就需要创建Pen对象进行绘制,Pen对象就像画笔,能够在画布上绘制图形,示例代码如下所示。Penpen=newPen(Color.Green,10);//创建画笔对象上述代码定义了画笔的颜色和宽度,定义画笔后就需要清除整个绘图面并进行背景颜色填充,示例396代码如下所示。gr.Clear(Color.WhiteSmoke);//格式化画布填充背景后,就能够使用Graphice的DrawLine方法进行线条绘制,示例代码如下所示。gr.DrawLine(pen,50,200,400,20);//绘制直线上述代码则会在“画布”上绘制线条,运行后如图15-8所示。图15-8绘制线条通过使用GDI+的Graphice类能够在页面中绘制图形,Graphice类还能够处理图片,实现锐化、底片等效果,Graphice类将在后面的章节详细讲到。15.1.4.NETFramework绘图类GDI+包括很多的类,结构和枚举用于为开发人员提供快速进行图形图像开发提供保障和指导。1.命名空间GDI+包括很多的类、结构和枚举用于为开发人员提供图形编程,这些类、结构和枚举都定义在命名空间中,这些命名控件如下所示。System.Drawing:提供对GDI+基本图形图像功能的访问,Graphice包含在此命名空间中。System.Drawing.Drawing2D:提供高级的二维和矢量图形功能。System.Drawing.Imaging:提供高级的图像处理功能。System.Drawing.Text:提供高级的文字处理及排版功能。System.Drawing.Printing:提供图形打印所需要的类。System.Drawing.Design:提供开发UI设计时所需要的类。这些命名空间为开发人员提供了图形图像编程的基本保障,其中最常用的是System.Drawing,该命名空间提供了Graphice类进行图形图像处理。System.Drawing.Drawing2D提供了高级的二维图形和矢量图形的处理功能,使用System.Drawing.Drawing2D能够进行二维图形和二维游戏的开发和编写。System.Drawing.Imaging命名空间主要提供了图像处理的功能,

1 / 20
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功