台技术设计与应用net第三章v2_第1页
台技术设计与应用net第三章v2_第2页
台技术设计与应用net第三章v2_第3页
台技术设计与应用net第三章v2_第4页
台技术设计与应用net第三章v2_第5页
已阅读5页,还剩103页未读 继续免费阅读

下载本文档

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

文档简介

电子政务平台技术设计与应用 南大滨海学院法政学系 张一鸣 1 电子政务平台技术设计与应用 南大滨海学院法政学系 张一鸣电子政务平台技术设计与应用 ASP.NET高级应用 Version 2 南大滨海学院法政学系 张一鸣 2016年 2月 10日 电子政务平台技术设计与应用 南大滨海学院法政学系 张一鸣 2 ASP.NET高级应用 第 3章 GDI+图形图像 南大滨海学院法政学系 张一鸣 2016年 2月 10日 电子政务平台技术设计与应用 电子政务平台技术设计与应用 南大滨海学院法政学系 张一鸣 3 本章主要内容 本章主要是 ASP.NET中涉及的 C#涉及的绘图知识,包括绘图的基本概念、基本图形的绘制和绘图的应用(如饼形图、折线图和直方图等) 。 GDI+绘图基础 基本图形绘制 GDI+绘图应用 电子政务平台技术设计与应用 南大滨海学院法政学系 张一鸣 4 3.1 GDI+绘图 在 ASP.NET框架中,页面绘图是基于 GDI+技术来实现的, GDI+是图形设备接口( GDI)的高级版本,是一种通用的技术。由一系列可以绘制图片的类组成,主要分为二维矢量图形、图像处理和版式三部分组成。可以在 Windows或 ASP.NET应用程序中不用借助第三方控件,直接绘制图形,比如随机生成的验证码、复杂的统计图表等。 电子政务平台技术设计与应用 南大滨海学院法政学系 张一鸣 5 GDI+绘图 在 ASP.NET应用程序中,图形被创建成 HTML流,然后发送到客户端的浏览器中显示出来,创建动态的图形。本节主要介绍如何使用这种技术。 GDI+存在于 System.Drawing.dll动态链接库的程序集中。在使用时要在程序开始处引入命名空间 using System.Drawing。 电子政务平台技术设计与应用 南大滨海学院法政学系 张一鸣 6 GDI+基类的主要命名空间 命 名 空 间 说 明 System.Drawing 提供了对 GDI+基本图形功能的访问 System.Drawing.Drawing2D 提供了高级的二维和矢量图形功能 System.Drawing.Imaging 提供了高级 GDI+图像处理功能 System.Drawing.Printing 把打印机或打印预览窗口作为输出设备时使用的类 System.Drawing.Design 一些预定义的对话框、属性表和其他用户界面元素,与在设计期间扩展用户界面相关 System.Drawing.Text 提供了高级 GDI+字体和文本排版功能 电子政务平台技术设计与应用 南大滨海学院法政学系 张一鸣 7 绘制图形的类所设计的命名空间 System.Drawing定义了许多基本绘图元素,如 Pens, Brushes, Bitmap等 System.Drawing2D提供高级的二维和矢量图形功能,如 GraphicsPath类等 System.Drawing.Imageing提供高级 GDI+图像处理功能,包括 ImageFormat类等 System.Drawing.Text提供高级 GDI+排版处理功能,比如文字排列方式等。其他还有 System.Printing, System.Internal, System. Design等 电子政务平台技术设计与应用 南大滨海学院法政学系 张一鸣 8 使用 GDI+绘图的步骤 1. 在内存中创建一个 Bitmap位图对象 2. 创建一个 Graphics对象,以便于利用它进行绘图 3. 使用 Graphics对象的各种方法来完成绘图 4. 将图像数据以二进制格式写入浏览器显示出来 电子政务平台技术设计与应用 南大滨海学院法政学系 张一鸣 9 使用 GDI+绘图的步骤说明 1. 在内存中创建一个 Bitmap位图对象,所有的绘图将在该位图上进行。例如: Bitmap bitmap = new bitmap (80, 80); 2. 为上一步创建的 Bitmap对象利用 FromImage方法创建一个 Graphics对象,以便于使用System.Drawing. Graphics命名空间中的属性和方法进行各种画图操作。例如: Graphics g = Graphics.FromImage (bitmap); 电子政务平台技术设计与应用 南大滨海学院法政学系 张一鸣 10 绘图的步骤说明(续) 3. 使用 Graphics对象的各种方法来完成绘图,包括绘制图形、填充图像或者从一个已经存在的文件中复制图像。 4. 调用 Response.OutputStream将图像数据以二进制格式写入浏览器。特别是当完成绘图后还要用方法 Dispose释放图形对象空间。 电子政务平台技术设计与应用 南大滨海学院法政学系 张一鸣 11 3.2 常见的画图对象 3.2.1 Pen对象 Pen对象是用于绘制直线和曲线的对象。可以使用DashStyle属性绘制虚线,还可以使用各种填充样式(包括纯色和纹理)来填充 Pen绘制的直线。填充模式取决于画笔或用作填充对象的纹理。创建 Pen对象的语法如下: public Pen( Color color ); public Pen( Color color, float width ); public Pen( Brush brush ); public Pen( Brush brush, float width ); 电子政务平台技术设计与应用 南大滨海学院法政学系 张一鸣 12 画笔对象的属性 画笔对象的属性用于返回或设置画笔对象的颜色、画线样式、画线始点及终点的样式等,其常用属性及说明如下表所示。 属 性 说 明 Color 获取或设置此 Pen对象的颜色 DashCap 获取或设置用在短画线终点的线帽样式,这些短画线构成通过 Pen对象绘制的虚线 DashStyle 获取或设置用于通过 Pen对象绘制的虚线的样式 EndCap 获取或设置要在通过 Pen对象绘制的直线终点使用的线帽样式 PenType 获取用 Pen对象绘制的直线的样式 StartCap 获取或设置在通过 Pen对象绘制的直线起点使用的线帽样式 Width 获取或设置 Pen对象的宽度 电子政务平台技术设计与应用 南大滨海学院法政学系 张一鸣 13 3.2.2 Brush对象 画刷 ( Brush) 是可与 Graphics对象一起使用来创建实心形状和呈现文本的对象 。可以用画刷填充各种图形形状 , 如矩形 、 椭圆 、 扇形 、 多边形和封闭路径等 。 画刷类是一个抽象基类 , 本身不能进行实例化 。 若要创建一个画刷对象 。 需要从Brush类派生出新的子类 , 如 SolidBrush等 。 电子政务平台技术设计与应用 南大滨海学院法政学系 张一鸣 14 不同类型的 Brush SolidBrush:画刷最简单的形式 , 用纯色进行绘制 。 HatchBrush:类似于 SolidBrush, 但是可以利用该类从大量预设的图案中选择绘制时要使用的图案 , 而不是纯色 。 TextureBrush:使用纹理 ( 如图像 ) 进行绘制 。 LinearGradientBrush:使用沿渐变混合的两种颜色进行绘制 。 PathGradientBrush:基于编程者定义的唯一路径 ,使用复杂的混合色渐变进行绘制 。 电子政务平台技术设计与应用 南大滨海学院法政学系 张一鸣 15 不同类型画刷的用途 1 使用 SolidBrush类定义单色画笔 2 使用 HatchBrush类绘制简单图案 3 使用 TextureBrush类绘制复杂图案 4 使用 LinearGradientBrush类定义线性渐变 5 使用 PathGradientBrush类实现彩色渐变 电子政务平台技术设计与应用 南大滨海学院法政学系 张一鸣 16 例子 3.1 单色画笔的使用 本例实现当程序运行时,在页面上绘制一个使用指定颜色填充的椭圆。 在新建网站中的默认主页为 Default.aspx。页面里不用添加任何语句。在其后台代码文件中的 Page_Load事件中,先定义一个画布,再定义一个黄色画刷,调用 Graphics对象的FillEllipse方法在画布上绘制一个用黄色填充的椭圆并显示。 电子政务平台技术设计与应用 南大滨海学院法政学系 张一鸣 17 public partial class _Default : System.Web.UI.Page protected void Page_Load(object sender, EventArgs e) Bitmap bitmap = new Bitmap(800, 600); Graphics graphics = Graphics.FromImage(bitmap); graphics.Clear(Color.White); /清空背景 SolidBrush mySolidBrush = new SolidBrush(Color.Yellow); graphics.FillEllipse(mySolidBrush, 70, 20, 100, 50); System.IO.MemoryStream ms = new System.IO.MemoryStream(); 例子 3.1 单色画笔使用的代码 电子政务平台技术设计与应用 南大滨海学院法政学系 张一鸣 18 bitmap.Save ( ms, System.Drawing.Imaging.- ImageFormat.Gif ); Response.ClearContent ( ); Response.ContentType = image/Gif; Response.BinaryWrite ( ms.ToArray ( ) ); 例子 3.1 的代码(续) 电子政务平台技术设计与应用 南大滨海学院法政学系 张一鸣 19 例子 3.1 的运行结果 电子政务平台技术设计与应用 南大滨海学院法政学系 张一鸣 20 例子 3.2 简单图案画笔的使用 本例实现当程序运行时,在页面上绘制一个使用指定简单图案填充的椭圆。 在新建网站中的默认主页为 Default.aspx。页面里不用添加任何语句。在其后台代码文件中的 Page_Load事件中,先定义一个画布,再定义一个橙色为背景、绿色为前景并使用斜纹填充的椭圆并显示。 电子政务平台技术设计与应用 南大滨海学院法政学系 张一鸣 21 public partial class _Default : System.Web.UI.Page protected void Page_Load (object sender, EventArgs e) Bitmap bitmap = new Bitmap(200, 100); Graphics graphics = Graphics.FromImage ( bitmap ); graphics.Clear ( Color.White ); /清空背景 HatchBrush myhatchBrush = new HatchBrush ( HatchStyle.BackwardDiagonal, Color.Green, Color .Orange ); graphics.FillEllipse ( myhatchBrush, 0, 0, 200, 100 ); 例子 3.2 简单图案使用的代码 电子政务平台技术设计与应用 南大滨海学院法政学系 张一鸣 22 System.IO.MemoryStream ms = new System.IO.- MemoryStream(); bitmap.Save(ms, System.Drawing.Imaging.- ImageFormat.Jpeg ); Response.ClearContent ( ); Response.ContentType = image/Jpeg; Response.BinaryWrite ( ms.ToArray ( ) ); 例子 3.2 的代码(续) 电子政务平台技术设计与应用 南大滨海学院法政学系 张一鸣 23 例子 3.2 的运行结果 电子政务平台技术设计与应用 南大滨海学院法政学系 张一鸣 24 例子 3.3 绘制线性渐变图案 本例实现当程序运行时,在页面上绘制一个使用线性渐变图案填充的矩形。 在新建网站中的默认主页为 Default.aspx。页面不添加任何语句。在后台代码文件中 Page_Load事件中,先后定义画布、图形和 Rectangle对象,根据矩形对象创建线性渐变画刷对象,调用 Graphics对象的填充矩形方法在画布上绘制使用线性渐变图案填充的矩形并显示。 电子政务平台技术设计与应用 南大滨海学院法政学系 张一鸣 25 图形颜色的渐变 所谓颜色线性渐变( LinearGradientBrush)是指颜色沿直线方向在两种或几种颜色间逐渐过渡变化(如下图所示),它适用于不同图形元素的背景色或颜色填充。除此之外还有圆形梯度渐变颜色。 颜色线性渐变的例子 电子政务平台技术设计与应用 南大滨海学院法政学系 张一鸣 26 线性梯度画刷 ( LinearGradientBrush) 在线性梯度画刷中,颜色梯度是沿着一条直线分布的,该线是 LinearGradientBrush类中的 StartPoint和 EndPoint两点之间的连线, StartPoint的默认值是(0,0), EndPoint的默认值是 (Cos ,Sin ),其中 为射线和 X坐标轴间的夹角,逆时针方向为正。垂直于这条线的颜色是一样的,颜色按照这条射线按梯度分布,可以通过改变角度来控制梯度分布的方式。有关概念参见下图: 电子政务平台技术设计与应用 南大滨海学院法政学系 张一鸣 27 线性梯度画刷的有关概念 射线 StartPoint(0,0) EndPoint (Cos,Sin) X坐标轴 Y坐标轴 梯度线 电子政务平台技术设计与应用 南大滨海学院法政学系 张一鸣 28 protected void Page_Load (object sender, EventArgs e) Bitmap bitmap = new Bitmap (200, 100); Graphics graphics = Graphics.FromImage (bitmap); graphics.Clear (Color.White); /清空背景 Rectangle rectangle = new Rectangle(0, 0, 200, 100); LinearGradientBrush myLinearGradientBrush = new LinearGradientBrush (rectangle, Color.White, Color.Green, LinearGradientMode.ForwardDiagonal); graphics.FillRectangle (myLinearGradientBrush, 0, 0, 200, 100); 例子 3.3 程序的代码 电子政务平台技术设计与应用 南大滨海学院法政学系 张一鸣 29 System.IO.MemoryStream ms = new System.IO.MemoryStream (); bitmap.Save ( ms, System.Drawing.Imaging.- ImageFormat.Jpeg ); Response.ClearContent ( ); Response.ContentType = image/Jpeg; Response.BinaryWrite ( ms.ToArray ( ) ); 例子 3.3 程序的代码(续) 电子政务平台技术设计与应用 南大滨海学院法政学系 张一鸣 30 例子 3.3 的运行结果 电子政务平台技术设计与应用 南大滨海学院法政学系 张一鸣 31 例子 3.4 路径渐变画刷的使用 在 GDI+中,把一个或多个图形组成的形体称为路径。可以使用 GraphicsPath类定义路径,使用 PathGradientBrush类定义路径内部的渐变色画刷。渐变色从路径内部的中心点逐渐过渡到路径的外边界边缘,它由若干个定义路径的外围边缘的点、一个中心点以及若干个针对每个点的颜色定义组成。 电子政务平台技术设计与应用 南大滨海学院法政学系 张一鸣 32 例子 3.4 例题说明 本例实现当程序运行时,在页面上使用两种不同方法绘制由彩色渐变色填充的圆形。 在新建网站中的默认主页为 Default.aspx。页面里不用添加任何语句。在其后台代码文件中的 Page_Load事件中,先定义一个画布,再根据已经声明的 PathGradientBrush类对绘制路径渐变的圆形并显示。 电子政务平台技术设计与应用 南大滨海学院法政学系 张一鸣 33 protected void Page_Load (object sender, EventArgs e) Bitmap bit = new Bitmap (400, 200); Graphics g = Graphics.FromImage (bit); g.Clear (Color. White); Point centerPoint = new Point (100, 100); int R = 100; GraphicsPath path = new GraphicsPath ( ); path.AddEllipse (centerPoint.X - R, centerPoint.Y - R, 2 * R, 2 * R); PathGradientBrush myPathGradientBrush = new PathGradientBrush(path); /指定路径中心点 例子 3.4 使用的代码 电子政务平台技术设计与应用 南大滨海学院法政学系 张一鸣 34 myPathGradientBrush.CenterPoint = centerPoint; /指定路径中心点的颜色 myPathGradientBrush.CenterColor = Color.DarkGreen; /Color类型的数组指定与路径上每个顶点对应的颜色 myPathGradientBrush.SurroundColors = new Color Color.Gold ; g.FillEllipse ( myPathGradientBrush, centerPoint.X - R, centerPoint.Y - R, 2 * R, 2 * R ); centerPoint = new Point ( 300, 100 ); R = 33; path = new GraphicsPath ( ); 例子 3.4 的代码(续 1) 电子政务平台技术设计与应用 南大滨海学院法政学系 张一鸣 35 path.AddEllipse ( centerPoint.X - R, centerPoint.Y - R, 2 * R, 2 * R); path.AddEllipse ( centerPoint.X - 2 * R, centerPoint.Y - 2 * R, 4 * R, 4 * R); path.AddEllipse ( centerPoint.X - 3 * R, centerPoint.Y - 3 * R, 6 * R, 6 * R); myPathGradientBrush = new PathGradientBrush (path); myPathGradientBrush.CenterPoint = centerPoint; myPathGradientBrush.CenterColor = Color.Gold; myPathGradientBrush.SurroundColors = new Color Color.Black, Color.Blue, Color.DarkGreen ; 例子 3.4 的代码(续 2) 电子政务平台技术设计与应用 南大滨海学院法政学系 张一鸣 36 g.FillPath ( myPathGradientBrush, path ); System.IO.MemoryStream ms = newSystem.IO.MemoryStream ( ); bit.Save ( ms, System.Drawing.Imaging.- ImageFormat.Jpeg ); Response.ClearContent ( ); Response.ContentType = image/Jpeg; Response.BinaryWrite ( ms.ToArray ( ) ); 例子 3.4 的代码(续 3) 电子政务平台技术设计与应用 南大滨海学院法政学系 张一鸣 37 例子 3.4 的运行结果 电子政务平台技术设计与应用 南大滨海学院法政学系 张一鸣 38 3.3 基本图形绘制 本节主要内容: 1、 GDI+中的直线和矩形 3、 GDI+中的多边形 2、 GDI+中的椭圆、弧和扇形 电子政务平台技术设计与应用 南大滨海学院法政学系 张一鸣 39 1) GDI+中的直线和矩形 1绘制直线:调用 Graphics类中的 DrawLine方法绘制直线。该方法为可重载方法,它主要用来绘制一条连接由坐标对指定的两个点的线条,其常用格式有以下两种。 ( 1)绘制一条连接两个 Point结构的线,语法如下: public void DrawLine (Pen pen, Point pt1, Point pt2) 电子政务平台技术设计与应用 南大滨海学院法政学系 张一鸣 40 ( 2)绘制一条连接由坐标对指定的两个点的线条,语法如下: public void DrawLine (Pen pen, int x1,int y1,int x2,int y2) 还可以使用 DrawLines方法绘制连接一组 Point结构的线段。数组中的前两个点指定第 1条线。每个附加点指定一个线段的终结点,该线段的起始点是前一条线段的结束点。语法如下: public void DrawLines (Pen pen, Point pts) 电子政务平台技术设计与应用 南大滨海学院法政学系 张一鸣 41 例子 3.5 绘制折线 本例实现当程序运行时,使用 DrawLines方法在页面上绘制一条折线。 在新建网站中的默认主页为 Default.aspx。页面里不用添加任何语句。在后台代码文件中的Page_Load事件中绘制一条起点为 (10,10),中间的两个端点为 (10,100)和( 200,50),终点为( 260,120)的折线并显示。 电子政务平台技术设计与应用 南大滨海学院法政学系 张一鸣 42 protected void Page_Load (object sender, EventArgs e) Bitmap bit = new Bitmap ( 260, 120 ); Graphics g = Graphics.FromImage ( bit ); g.Clear ( Color.White ); Pen pen = new Pen ( Color.Black, 3 ); Point points = new Point (10, 10), new Point(10, 100), new Point(200, 50), new Point(260, 120) ; g.DrawLines ( pen, points ); 例子 3.5 绘制折线的代码 电子政务平台技术设计与应用 南大滨海学院法政学系 张一鸣 43 System.IO.MemoryStream ms = new System.IO.MemoryStream ( ); bit.Save ( ms, System.Drawing.Imaging.- ImageFormat.Jpeg ); Response.ClearContent ( ); Response.ContentType = image/Jpeg; Response.BinaryWrite ( ms.ToArray ( ) ); 例子 3.5 的代码(续) 电子政务平台技术设计与应用 南大滨海学院法政学系 张一鸣 44 例子 3.5 的运行结果 电子政务平台技术设计与应用 南大滨海学院法政学系 张一鸣 45 2绘制矩形 绘制矩形时,可以调用 DrawRectangle方法(属于Graphics类)。该方法为可重载方法,它主要用来绘制由坐标对、宽度和高度指定的矩形,其常用格式有以下三种。 ( 1)绘制由 Rectangle结构指定的矩形,语法如下: public void DrawRectangle ( Pen pen, Rectangle rect ) 电子政务平台技术设计与应用 南大滨海学院法政学系 张一鸣 46 ( 2)绘制由坐标对、宽度和高度指定的矩形,语法如下: public void DrawRectangle ( Pen pen, int x, int y, int width, int height) ( 3)绘制由 Rectangle结构指定的多个矩形,语法如下: public void DrawRectangles ( Pen pen, Rectangle rects ) 电子政务平台技术设计与应用 南大滨海学院法政学系 张一鸣 47 例子 3.6 绘制多个矩形 本例实现使用 DrawRectangles方法在页面上绘制三个矩形。 在新建网站中的默认主页为 Default.aspx。页面里不用添加任何语句。在后台代码文件中的Page_Load事件中先定义一个包括 3个矩形坐标的 Rectangle数组,再用 DrawRectangles方法绘制它们并显示。 电子政务平台技术设计与应用 南大滨海学院法政学系 张一鸣 48 protected void Page_Load (object sender, EventArgs e) Bitmap bit = new Bitmap ( 360, 260 ); Graphics g = Graphics.FromImage ( bit ); g.Clear ( Color.White ); Pen pen = new Pen ( Color.Blue,2 ); Rectangle rects = new Rectangle ( 10, 10, 100, 200), new Rectangle (100, 200, 250, 50), new Rectangle (300, 10, 50, 100) ; 例子 3.6 绘制矩形的代码 电子政务平台技术设计与应用 南大滨海学院法政学系 张一鸣 49 g.DrawRectangles ( pen, rects ); System.IO.MemoryStream ms = new System.IO.MemoryStream ( ); bit.Save ( ms, System.Drawing.Imaging.- ImageFormat.Jpeg ); Response.ClearContent ( ); Response.ContentType = image/Jpeg; Response.BinaryWrite ( ms.ToArray ( ) ); 例子 3.6 的代码(续) 电子政务平台技术设计与应用 南大滨海学院法政学系 张一鸣 50 例子 3.6 的运行结果 电子政务平台技术设计与应用 南大滨海学院法政学系 张一鸣 51 2) GDI+中的椭圆、弧和扇形( 1) 1绘制椭圆 绘制椭圆时,可以调用 Graphics类中的 DrawEllipse方法。该方法为可重载方法,它主要用来绘制边界由Rectangle结构指定的椭圆,其常用格式有以下两种。 ( 1)绘制边界由 Rectangle指定的椭圆,语法如下: public void DrawEllipse (Pen pen,Rectangle rect) 电子政务平台技术设计与应用 南大滨海学院法政学系 张一鸣 52 ( 2)绘制一个由边框(该边框由一对坐标、高度和宽度指定)定义的椭圆,语法如下: public void DrawEllipse (Pen pen, int x, int y, int width, int height) 电子政务平台技术设计与应用 南大滨海学院法政学系 张一鸣 53 2绘制圆弧 绘制圆弧时,可以调用 Graphics类中的 DrawArc方法。该方法为可重载方法,它主要用来绘制一段弧线,其常用格式有以下两种。 ( 1)绘制一段弧线,它表示由 Rectangle结构指定的椭圆的一部分,语法如下: public void DrawArc ( Pen pen,Rectangle rect, float startAngle, float sweepAngle ) 电子政务平台技术设计与应用 南大滨海学院法政学系 张一鸣 54 ( 2)绘制一段弧线,它表示由一对坐标、宽度和高度指定的椭圆部分,语法如下: public void DrawArc ( Pen pen, int x, int y, int width, int height, int startAngle, int sweepAngle) 电子政务平台技术设计与应用 南大滨海学院法政学系 张一鸣 55 3绘制扇形 绘制扇形时,可以调用 Graphics类中的 DrawPie方法。该方法为可重载方法,它主要用来绘制扇形,其常用格式有以下两种。 ( 1)绘制一个扇形,该扇形由椭圆的一段弧线和两条与该弧线的终结点相交的射线定义,该椭圆由边框定义。扇形由两条射线(由 startAngle和sweepAngle参数定义)和这些射线与椭圆的交点之间的弧线组成。语法如下: public void DrawPie ( Pen pen, Rectangle rect, float startAngle, float sweepAngle ) 电子政务平台技术设计与应用 南大滨海学院法政学系 张一鸣 56 ( 2)绘制一个扇形,该扇形由椭圆的一段弧线和两条与该弧线的终结点相交的射线定义的。该椭圆由 x、y、 width和 height参数所描述的边框定义。扇形由两条射线(由 startAngle和 sweepAngle参数定义)和这些射线与椭圆的交点之间的弧线组成。语法如下: public void DrawPie ( Pen pen, int x, int y, int width, int height, int startAngle, int sweepAngle ) 电子政务平台技术设计与应用 南大滨海学院法政学系 张一鸣 57 例子 3.7 绘制椭圆、弧和扇形 本例实现分别使用 DrawEllipse、 DrawArc和 DrawPie方法在页面上绘制椭圆、弧和扇形。 在新建网站中的默认主页为 Default.aspx。页面里不用添加任何语句。在后台代码文件中的Page_Load事件中先定义一个包括上述三个图形的外接矩形坐标的 Rectangle数组,再分别调用上述 3个方法绘制它们并显示。 电子政务平台技术设计与应用 南大滨海学院法政学系 张一鸣 58 protected void Page_Load (object sender, EventArgs e) Bitmap bit = new Bitmap ( 360, 260 ); Graphics g = Graphics.FromImage ( bit ); g.Clear ( Color.White ); Pen pen = new Pen ( Color.Blue, 2 ); Rectangle rects = new Rectangle (10, 10, 100, 200), new Rectangle (100, 200, 250, 50), new Rectangle (100, 50, 150, 150) ; g.DrawEllipse ( pen, rects0 ); pen.Color = Color.Red; 例子 3.7 绘制椭圆等的代码 电子政务平台技术设计与应用 南大滨海学院法政学系 张一鸣 59 g.DrawArc ( pen, rects 1, -60, 180 ); pen.Color = Color.Turquoise; g.DrawPie ( pen, rects 2, 60, -120 ); System.IO.MemoryStream ms = new System.IO.MemoryStream ( ); bit.Save ( ms, System.Drawing.Imaging.- ImageFormat.Jpeg); Response.ClearContent ( ); Response.ContentType = image/Jpeg; Response.BinaryWrite ( ms.ToArray ( ) ); 例子 3.7 的代码(续) 电子政务平台技术设计与应用 南大滨海学院法政学系 张一鸣 60 例子 3.7 的运行结果 电子政务平台技术设计与应用 南大滨海学院法政学系 张一鸣 61 3.3.3 GDI+中的多边形 Graphics对象提供 DrawPolygon方法绘制多边形。该方法为可重载方法,其常用格式有以下两种。 ( 1)绘制由一组 Point结构定义的多边形,语法如下: public void DrawPolygon (Pen pen, Point points) 其中, pen为 Pen对象,它确定多边形的颜色、宽度和样式; points为 Point结构数组,这些结构表示多边形的顶点。 电子政务平台技术设计与应用 南大滨海学院法政学系 张一鸣 62 GDI+中的多边形(续) ( 2)绘制由一组 PointF结构定义的多边形,语法如下: public void DrawPolygon ( Pen pen, PointF points ) 其中, pen为 Pen对象,确定多边形的颜色、宽度和样式;points为 PointF结构数组,这些结构表示多边形的顶点。 电子政务平台技术设计与应用 南大滨海学院法政学系 张一鸣 63 例子 3.8 绘制五边形 本例实现使用 DrawPolygon方法在页面上绘制一个五边形。 在新建网站中的默认主页为 Default.aspx。页面里不用添加任何语句。在后台代码文件中的Page_Load事件中先定义一个包括 5个顶点的Point数组,并调用 DrawPolygon方法绘制五边形并显示。 电子政务平台技术设计与应用 南大滨海学院法政学系 张一鸣 64 protected void Page_Load (object sender, EventArgs e) Bitmap bit = new Bitmap ( 240, 200 ); Graphics g = Graphics.FromImage ( bit ); g.Clear ( Color.White ); Pen pen = new Pen ( Color.Blue, 2 ); Point pts = new Point new Point ( 10, 120 ), new Point ( 120, 100), new Point ( 180,120), new Point ( 240, 200), new Point ( 60, 200) ; 例子 3.8 绘制椭圆等的代码 电子政务平台技术设计与应用 南大滨海学院法政学系 张一鸣 65 g.DrawPolygon ( pen, pts ); System.IO.MemoryStream ms = new System.IO.MemoryStream ( ); bit.Save ( ms, System.Drawing.Imaging.- ImageFormat.Jpeg ); Response.ClearContent ( ); Response.ContentType = image/Jpeg; Response.BinaryWrite ( ms.ToArray ( ) ); 例子 3.8 的代码(续) 电子政务平台技术设计与应用 南大滨海学院法政学系 张一鸣 66 例子 3.8 的运行结果 电子政务平台技术设计与应用 南大滨海学院法政学系 张一鸣 67 3.4 GDI+绘图的应用 1、绘制柱形图 3、绘制饼形图 2、绘制折线图 电子政务平台技术设计与应用 南大滨海学院法政学系 张一鸣 68 GDI+绘图技术的应用 在一些网站中,通常要对有些特定类型的数据进行统计,例如网站流量、投票结果以及销售量等。为了能够更直观地查看这些数据,很多网站都采用图表(直方图或矩形图、折线图和饼图)来显示数据。本节将对常见的这几种图表的绘制以及图形的其它应用进行介绍。 电子政务平台技术设计与应用 南大滨海学院法政学系 张一鸣 69 3.4.1 简单图形的应用 在一些网站中,通常要对有些特定类型的数据进行统计,例如网站流量、投票结果以及销售量等。为了能够更直观地查看这些数据,很多网站都采用图表(直方图或矩形图、折线图和饼图)来显示数据。本节将对常见的这几种图表的绘制以及图形的其它应用进行介绍。 电子政务平台技术设计与应用 南大滨海学院法政学系 张一鸣 70 例子 3.9 绘制自定义的图片 除了绘制文本,图形之外,使用 GDI+,还可以绘制己有的图片。当然,不仅只是绘制己有的图片,借助于 GDI+技术,还可以编辑己有图片,为图片添加水印,裁切图片等等。下面演示一下如何在Web页面上绘制一幅己有的图片。 在 SimpleGraphicsDemo项目中创建一个 Images文件夹,并添加一幅 JPG格式的图片。在网站根目录中创建一个名为 DrawingImage.aspx的 Web页面,然后在该页面的 Page_Load事件处理器中添加如下所示的程序代码: 电子政务平台技术设计与应用 南大滨海学院法政学系 张一鸣 71 例子 3.9 绘图 Page_Load事件代码 protected void Page_Load(object sender, EventArgs e) Bitmap image = new Bitmap(300, 300) /新建一个 Bitmap对象 Graphics g = Graphics.FromImage(image) /创建 Graphics对象 g.FillRectangle (Brushes.White, 1, 1, 295, 295); Font font = new Font (Verdana, 18, FontStyle.Regular); /调用 DrawingString方法在画布上绘制文本。 g.DrawString (绘制显示现有的图片 , font, Brushes.Silver, 10, 5); Image pic = Image.FromFile /在画布指定位置绘制的图象 (Server.MapPath(/Images/Image0.jpg); g.DrawImageUnscaled (pic, 10, 45, 200, 200); /无缩放式绘图 image.Save(Response.OutputStream, System.Drawing.Imaging.ImageFormat.Gif); 电子政务平台技术设计与应用 南大滨海学院法政学系 张一鸣 72 例子 3.9 的运行效果 电子政务平台技术设计与应用

温馨提示

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

评论

0/150

提交评论