图形图像程序设计_第1页
图形图像程序设计_第2页
图形图像程序设计_第3页
图形图像程序设计_第4页
图形图像程序设计_第5页
已阅读5页,还剩40页未读 继续免费阅读

下载本文档

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

文档简介

1、1 本章将主要介绍本章将主要介绍C#C#中图形、图像绘中图形、图像绘制及处理的基本知识和技巧,使读者制及处理的基本知识和技巧,使读者对对C#C#中图形绘制及图像处理过程有一中图形绘制及图像处理过程有一个大致的了解。个大致的了解。2章节内容章节内容18.1 GDI+基础基础18.2 基本图形的绘制基本图形的绘制18.3 图像处理图像处理18.4 小结小结318.1.1 GDI+概述GDI+GDI+(Graphics Device Interface PlusGraphics Device Interface Plus,图形设,图形设备接口)是一组应用程序编程接口备接口)是一组应用程序编程接口(A

2、PI)(API),为开发,为开发人员提供了一组与各种设备进行交互的类。人员提供了一组与各种设备进行交互的类。应用程序GDI+打印机显示器文件418.1.1 GDI+概述GDI+GDI+是微软推出的新一代二维图形系统,是是微软推出的新一代二维图形系统,是Windows Windows XPXP和和Windows Server 2003Windows Server 2003操作系统自带的图形接口。操作系统自带的图形接口。GDIGDI是是WindowsWindows操作系统早期版本的图形接口。与操作系统早期版本的图形接口。与GDIGDI相比,相比,GDI+GDI+的性能更优化,并添加了许多新的功能。

3、的性能更优化,并添加了许多新的功能。目前目前GDI+GDI+已完全替代已完全替代GDIGDI,是在,是在WindowsWindows窗口应用程序窗口应用程序中以编程方式呈现图形的唯一一方法。中以编程方式呈现图形的唯一一方法。GDI+ GDI+ 已经被集成到了已经被集成到了开发环境中,所以不管你开发环境中,所以不管你的的osos是什么版本,只要安装了是什么版本,只要安装了框架,就有了框架,就有了GDI+ GDI+ 518.1.1 GDI+概述GDI+GDI+按功能划分,可分为按功能划分,可分为3 3类:类:(1 1)二维矢量图形绘制:使用)二维矢量图形绘制:使用GDI+GDI+绘制矢量线条和形状

4、。绘制矢量线条和形状。 GDI+GDI+提供了用于存储矢量图形信息的类,如提供了用于存储矢量图形信息的类,如PenPen类,以及类,以及存储矢量图形绘制信息的类和实际绘制图形的类,如存储矢量图形绘制信息的类和实际绘制图形的类,如GraphicsGraphics类。类。(2 2)图像处理:)图像处理:GDI+GDI+提供了提供了BitmapBitmap、ImageImage等类用于显等类用于显示、操作和保存示、操作和保存BMPBMP、JPGJPG、GIFGIF等格式的图像。等格式的图像。(3 3)文字显示:使用)文字显示:使用GDI+GDI+显示各种字体、字号和样式的显示各种字体、字号和样式的文

5、本。文本。618.1.2 Graphics类 GraphicsGraphics类是所有绘图的基础,绘图之前都需要先类是所有绘图的基础,绘图之前都需要先创建创建 Graphics Graphics 对象,相当于在窗体中创建了一块对象,相当于在窗体中创建了一块画布,然后使用画布,然后使用GDI+ GDI+ 绘制线条和形状、呈现文本或绘制线条和形状、呈现文本或显示与操作图像。显示与操作图像。 1 1创建创建GraphicsGraphics对象,对象,3 3种方法:种方法: (1 1)利用窗体或控件的)利用窗体或控件的PaintPaint事件中的事件中的PaintEventArgsPaintEvent

6、Args方方法:为窗体或控件编写法:为窗体或控件编写PaintPaint事件时,事件时,GraphicsGraphics对象可以通对象可以通过过PaintPaint事件中的事件中的PaintEventArgsPaintEventArgs方法来获取。方法来获取。private void Form1_Paint(object sender,System.Windows.Forms.PaintEventArgs e) Graphics g=e.Graphics; 718.1.2 Graphics类(2 2)利用窗体或某个控件的)利用窗体或某个控件的CreateGraphicsCreateGraphi

7、cs方法:当要在某窗方法:当要在某窗体或控件上显示图形时,可利用某窗体或控件的体或控件上显示图形时,可利用某窗体或控件的获取对获取对GraphicsGraphics对象的引用。对象的引用。 Graphics g1=this.CreateGraphics(); Graphics g2=button1.CreateGraphics(); /其中,其中,this代表某窗体,代表某窗体,button1代表代表Button按钮控件。按钮控件。(3 3)由)由ImageImage类派生的任意对象创建图形对象:当需要更改某类派生的任意对象创建图形对象:当需要更改某个已经存在的图像时,可利用个已经存在的图像时

8、,可利用ImageImage类派生的任意对象创建图形类派生的任意对象创建图形对象。对象。GraphicsGraphics对象。对象。Bitmap mybitmap=new Bitmap(1.jpg);Graphics g=Graphics.FromImage(mybitmap);:Graphics:Graphics对象使用完后,应当及时释放掉,否则会占用内对象使用完后,应当及时释放掉,否则会占用内存资源。存资源。g.g.DisposeDispose() () 818.1.2 Graphics类 2Graphics对象的方法对象的方法方法说明Clear清除整个绘图面并以指定背景色填充DrawAr

9、c绘制一段弧线,它表示由一对坐标、宽度和高度指定的椭圆部分DrawEllipse绘制一个由边框定义的椭圆DrawIcon在指定坐标处绘制由指定的Icon对象表示的图像DrawIconUnstretched绘制指定的Icon对象表示的图像,而不缩放该图像DrawImage在指定位置绘制指定的Image对象DrawImageUnscaled在坐标对所指定的位置并且按其原始大小绘制指定的Image对象DrawLine绘制一条连接由坐标对指定的两个点的线段9DrawLines绘制一系列连接一组Point结构的线段DrawPie绘制一个扇形DrawPolygon绘制由一组Point结构定义的多边形Dra

10、wRectangle绘制由坐标对、宽度和高度指定的矩形DrawRectangles绘制一系列由Rectangle结构指定的矩形DrawString在指定位置绘制指定的文本字符串FillEllipse填充边框所定义的椭圆的内部FillPie填充指定的椭圆所定义的扇形区的内部FillPolygon填充Point结构指定的点数组所定义的多边形的内部FillRectangle填充由一对坐标、一个宽度和一个高度指定的矩形的内部FillPath填充GraphicsPath的内部18.1.2 Graphics类10下列代码演示下列代码演示Graphics对象的应用对象的应用 private void For

11、m1_Paint(object sender, PaintEventArgs e) Graphics g = e.Graphics; / 创建画布创建画布 g.Clear(Color.FromArgb(244,23,34); g.Dispose(); private void button1_Click(object sender, EventArgs e) Graphics a = button1.CreateGraphics(); / 创建画布创建画布 a.Clear(Color.Red); g.Dispose(); 18.1.2 Graphics类1118.1.3 画笔对象的使用Grap

12、hics类对象相当于画布,而画笔就相当于绘图的笔,常类对象相当于画布,而画笔就相当于绘图的笔,常用用Pen类类来创建画笔对象绘制线、图形边缘,来创建画笔对象绘制线、图形边缘,Brush类类来填充来填充图形或一个封闭区域。图形或一个封闭区域。Pen类的常用属性为宽度、颜色和样式。宽度属性用于确定线类的常用属性为宽度、颜色和样式。宽度属性用于确定线条的宽度,以像素为单位;颜色属性用于确定线条的颜色;样条的宽度,以像素为单位;颜色属性用于确定线条的颜色;样式属性用于确定所绘制线条的线型,通常有实线(式属性用于确定所绘制线条的线型,通常有实线(Solid)、)、虚线(虚线(Dash)、点线()、点线(

13、Dot)、点划线()、点划线(DashDot)、双点划)、双点划线(线(DashDotDot)等。另外,在)等。另外,在C#中还可以通过属性设置画中还可以通过属性设置画笔起点和终点的样式,通常在起点或终点加上箭头。笔起点和终点的样式,通常在起点或终点加上箭头。 1218.1.3 画笔对象的使用 1 1创建画笔对象创建画笔对象 常用的常用的PenPen类构造函数为:类构造函数为:public public Pen(ColorPen(Color color) color) public public Pen(ColorPen(Color color color,float width)float

14、width) 例如:例如:Pen p =new Pen p =new Pen(Color.RedPen(Color.Red);); 注意,注意,PenPen对象使用完毕后,应当被及时释放掉,对象使用完毕后,应当被及时释放掉,否则会占据内存资源。否则会占据内存资源。1318.1.3 画笔对象的使用 2画笔对象的属性画笔对象的属性。可通过设置画笔的属性值来可通过设置画笔的属性值来使用画笔。使用画笔。名称说明Color设置画笔对象的颜色Width设置画笔的宽度EndCap获取画笔绘制的直线终点的样式StartCap设置画笔绘制的直线起点的样式DashStyle设置画笔绘制的虚线的线型1418.1.3

15、 画笔对象的使用下列代码演示下列代码演示Pen对象的应用。对象的应用。Graphics a = this.CreateGraphics();a.Clear(Color.Red);Pen p = new Pen(Color.Blue, 5);p.DashStyle = DashStyle.DashDot; p.EndCap = LineCap.ArrowAnchor;a.DrawLine(p, 10, 30, 200, 30);p.Dispose();a.Dispose();152 2、画刷(、画刷(BrushBrush) 画刷是可与画刷是可与GraphicsGraphics对象一起使用来创建实

16、心形状和呈现文对象一起使用来创建实心形状和呈现文本的对象。可以用画笔填充各种图形形状,如矩形、椭圆、扇形、本的对象。可以用画笔填充各种图形形状,如矩形、椭圆、扇形、多边形和封闭路径等。多边形和封闭路径等。 几种不同类型的画刷几种不同类型的画刷: : SolidBrushSolidBrush:画刷最简单的形式,用纯色进行绘制。:画刷最简单的形式,用纯色进行绘制。 HatchBrushHatchBrush:类似于:类似于 SolidBrushSolidBrush,但是可以利用该类从大量,但是可以利用该类从大量预预定义定义的图案中选择绘制时要使用的图案,而不是纯色。的图案中选择绘制时要使用的图案,而

17、不是纯色。 TextureBrushTextureBrush:使用纹理(如:使用纹理(如图像图像)进行绘制。)进行绘制。 LinearGradientBrushLinearGradientBrush:使用沿渐变混合的两种颜色进行绘制。:使用沿渐变混合的两种颜色进行绘制。 PathGradientBrushPathGradientBrush:基于编程者定义的唯一路径,使用复杂的:基于编程者定义的唯一路径,使用复杂的混合色渐变进行绘制。混合色渐变进行绘制。18.1.4 18.1.4 画刷对象的使用画刷对象的使用16 SolidBrushSolidBrush类用于定义单色画笔。该类只有一个构造函数,

18、类用于定义单色画笔。该类只有一个构造函数,带有一个带有一个ColorColor类型的参数。类型的参数。 下面的示例说明如何在窗体上绘制一个纯红色的椭圆。该椭下面的示例说明如何在窗体上绘制一个纯红色的椭圆。该椭圆将符合为其提供的矩形的大小(此例中为表示整个窗体的圆将符合为其提供的矩形的大小(此例中为表示整个窗体的ClientRectangleClientRectangle)。)。【例例】单色画刷演示示例。单色画刷演示示例。 private void Form1_private void Form1_Paint ( )( ) Graphics g = Graphics g =e.Graphicse

19、.Graphics; ; SolidBrushSolidBrush myBrushmyBrush=new =new SolidBrushSolidBrush( (Color.RedColor.Red);); g.FillEllipseg.FillEllipse( (myBrushmyBrush, , this.ClientRectanglethis.ClientRectangle);); 17运行效果运行效果:18(2)使用使用HatchBrush类绘制简单图案类绘制简单图案 HatchBrush类用于从大量类用于从大量的图案中选择绘制时的图案中选择绘制时要使用的图案,而不是纯色。要使用的图案

20、,而不是纯色。 下面的示例说明如何创建一个下面的示例说明如何创建一个HatchBrush,它使用,它使用90%的阴影,前景色与背景色的比例为的阴影,前景色与背景色的比例为90:100,并使用白,并使用白色作为前景色,黑色作为背景色。色作为前景色,黑色作为背景色。【例例】填充简单图案示例。填充简单图案示例。 private void Form1_Click( ) Graphics g = this.CreateGraphics(); HatchBrush aHatchBrush = new HatchBrush(HatchStyle.Percent90,Color.White,Color.Bla

21、ck); g.FillEllipse(aHatchBrush, this.ClientRectangle); 1920 TextureBrush TextureBrush类类。该类提供了。该类提供了5 5个个重载的构造函数,分别是:重载的构造函数,分别是: Public TextureBrush(Image)Public TextureBrush(Image) Public TextureBrush(Image,Rectangle) Public TextureBrush(Image,Rectangle) Public TextureBrush(Image,WrapMode) Public T

22、extureBrush(Image,WrapMode) Public TextureBrush(Image,Rectangle,ImageAttributes) Public TextureBrush(Image,Rectangle,ImageAttributes) Public TextureBrush(Image,WrapMode,Rectangle) Public TextureBrush(Image,WrapMode,Rectangle)其中:其中: 1 1、ImageImage:ImageImage对象用于指定画笔的填充图案。对象用于指定画笔的填充图案。 2 2、RectangleR

23、ectangle:RectangleRectangle对象用于指定图像上用于画笔的矩形区域,其位置对象用于指定图像上用于画笔的矩形区域,其位置不能超越图像的范围。不能超越图像的范围。 3 3、WrapModeWrapMode:WrapModeWrapMode枚举成员用于指定如何排布图像,可以取值如下:枚举成员用于指定如何排布图像,可以取值如下: ClampClamp: 完全由绘制对象的边框决定完全由绘制对象的边框决定 TileTile: 平铺平铺 TileFlipXTileFlipX: 水平方向翻转并平铺图像水平方向翻转并平铺图像 TileFlipYTileFlipY: 垂直方向翻转并平铺图像

24、垂直方向翻转并平铺图像 TileFlipXYTileFlipXY: 水平和垂直方向翻转并平铺图像水平和垂直方向翻转并平铺图像 4 4、ImageAttributesImageAttributes:ImageAttributesImageAttributes对象用于指定图像的附加特性参数。对象用于指定图像的附加特性参数。21 ImageImage:ImageImage类型,与画笔关联的图像对象。类型,与画笔关联的图像对象。 TransformTransform:MatrixMatrix类型,画笔的变换矩阵。类型,画笔的变换矩阵。 WrapModeWrapMode:WrapModeWrapMode

25、枚举成员,指定图像的排布方式。枚举成员,指定图像的排布方式。 下面的示例说明了如何创建一个下面的示例说明了如何创建一个TextureBrushTextureBrush,例子使用名为,例子使用名为m23.jpgm23.jpg的图像进行绘制。的图像进行绘制。 【例例】创建创建TextureBrushTextureBrush示例。示例。 privateprivate voidvoid Button1_Click( ) Button1_Click( ) Graphics g = Graphics g = this.CreateGraphicsthis.CreateGraphics();(); Text

26、ureBrushTextureBrush myBrushmyBrush= =new new TextureBrushTextureBrush( (new new Bitmap(e:testm23.jpg);Bitmap(e:testm23.jpg); g.FillEllipseg.FillEllipse( (myBrushmyBrush, , thisthis.ClientRectangle.ClientRectangle);); 22运行效果:运行效果:23 这个类用于定义这个类用于定义线性渐变线性渐变画笔,可以是双色渐变,也画笔,可以是双色渐变,也可以是多色渐变。缺省情况下,渐变由起始颜色

27、沿着水平可以是多色渐变。缺省情况下,渐变由起始颜色沿着水平方向平均过渡到终止颜色。要定义多色渐变,需要使用方向平均过渡到终止颜色。要定义多色渐变,需要使用InterpolationColorsInterpolationColors属性。下面的示例说明如何由白色渐属性。下面的示例说明如何由白色渐变到蓝色。变到蓝色。【例例】线性渐变示例。线性渐变示例。 private void Form1_Click( )Graphics g = this.CreateGraphics();LinearGradientBrush myBrush = new LinearGradientBrush(this.Cli

28、entRectangle, Color.White, Color.Blue, LinearGradientMode.Vertical); g.FillRectangle(myBrush, this.ClientRectangle);24 如果创建应用程序后向设计窗体上拖放一些控件,如果创建应用程序后向设计窗体上拖放一些控件,可以看到运行后该图就是一个漂亮的背景了。可以看到运行后该图就是一个漂亮的背景了。 25(5)(5)使用使用PathGradientBrushPathGradientBrush类实现彩色渐变类实现彩色渐变 在在GDI+GDI+中,把一个或多个图形组成的形体称作路径。可中,把一

29、个或多个图形组成的形体称作路径。可以使用以使用GraphicsPathGraphicsPath类定义路径类定义路径( (GraphicsPathGraphicsPath类表示一系类表示一系列相互连接的直线和曲线列相互连接的直线和曲线) ),使用,使用PathGradientBrushPathGradientBrush类定类定义路径内部的渐变色画笔。渐变色从路径内部的中心点逐义路径内部的渐变色画笔。渐变色从路径内部的中心点逐渐过渡到路径的外边界边缘。渐过渡到路径的外边界边缘。 PathGradientBrushPathGradientBrush类有三种形式的构造函数,形式之一类有三种形式的构造函

30、数,形式之一是:是: public public PathGradientBrush(GraphicsPathPathGradientBrush(GraphicsPath path) path) 其中,其中,GraphicsPathGraphicsPath定义画笔填充的区域。定义画笔填充的区域。【例例】路径和路径画笔的使用。路径和路径画笔的使用。 using System.Drawing.Drawing2D;using System.Drawing.Drawing2D; 26private void Form1_Paint(object sender,private void Form1_Pa

31、int(object sender, System.Windows.Forms.PaintEventArgsSystem.Windows.Forms.PaintEventArgs e) e) Graphics g=Graphics g=e.Graphicse.Graphics; ;Point Point centerPointcenterPoint=new Point(150,100);=new Point(150,100);intint R=60; R=60; GraphicsPathGraphicsPath path=new path=new GraphicsPathGraphicsPat

32、h();();path.AddEllipse(centerPoint.X-R,centerPoint.Y-R,2path.AddEllipse(centerPoint.X-R,centerPoint.Y-R,2* *R,2R,2* *R);R);PathGradientBrushPathGradientBrush brush=new brush=new PathGradientBrush(pathPathGradientBrush(path);); / /指定路径中心点指定路径中心点brush.CenterPointbrush.CenterPoint= =centerPointcenterPo

33、int; ;/指定路径中心点的颜色指定路径中心点的颜色brush.CenterColorbrush.CenterColor= =Color.RedColor.Red; ;/Color/Color类型的数组指定与路径上每个顶点对应的颜色类型的数组指定与路径上每个顶点对应的颜色brush.SurroundColorsbrush.SurroundColors=new Color =new Color Color.PlumColor.Plum ; ;27g.FillEllipse(brush,centerPoint.X-R,centerPoint.Y-R,2g.FillEllipse(brush,ce

34、nterPoint.X-R,centerPoint.Y-R,2* *R,2R,2* *R);R); centerPointcenterPoint=new Point(350,100);=new Point(350,100); R=20; R=20;path=new path=new GraphicsPathGraphicsPath();();path.AddEllipse(centerPoint.X-R,centerPoint.Y-R,2path.AddEllipse(centerPoint.X-R,centerPoint.Y-R,2* *R,2R,2* *R);R);path.AddElli

35、pse(centerPoint.X-2path.AddEllipse(centerPoint.X-2* *R,centerPoint.Y-2R,centerPoint.Y-2* *R,4R,4* *R,4R,4* *R);R);path.AddEllipse(centerPoint.X-3path.AddEllipse(centerPoint.X-3* *R,centerPoint.Y-3R,centerPoint.Y-3* *R,6R,6* *R,6R,6* *R);R); brush=new brush=new PathGradientBrush(pathPathGradientBrush

36、(path););brush.CenterPointbrush.CenterPoint= =centerPointcenterPoint; ;brush.CenterColorbrush.CenterColor= =Color.RedColor.Red; ;brush.SurroundColorsbrush.SurroundColors=new Color =new Color Color.Black,Color.Blue,Color.GreenColor.Black,Color.Blue,Color.Green ; ;g.FillPath(brush,pathg.FillPath(brush

37、,path);); 28 在这个例子中,可以看到当使用在这个例子中,可以看到当使用FillPathFillPath()()方法填充路径的时方法填充路径的时候,如果多个图形互相重叠,则重叠部分的数目为偶数时不会被填候,如果多个图形互相重叠,则重叠部分的数目为偶数时不会被填充,因此右图中间部分仍为背景色而不是蓝色。充,因此右图中间部分仍为背景色而不是蓝色。 2918.1.5 Bitmap类 1创建创建Bitmap对象对象 Bitmap类的构造函数有多种重载形式,分别如下。类的构造函数有多种重载形式,分别如下。(1)从指定的图像文件建立)从指定的图像文件建立Bitmap对象。对象。 Bitmap b

38、itmap2=new Bitmap(“D:picturepicture.bmp”);(2)从指定的现有图像建立)从指定的现有图像建立Bitmap对象。对象。 Bitmap bitmap1=new Bitmap(pictureBox1.Image);(3)从现有的)从现有的Bitmap对象建立新的对象建立新的Bitmap对象,例如下列代码。对象,例如下列代码。 Bitmap bitmap3=new Bitmap(bitmap1);另外,另外,Bitmap类相当于一个图形容器,里面装载的对象即为图像,因类相当于一个图形容器,里面装载的对象即为图像,因此在编程时可以把此在编程时可以把Bitmap类的

39、对象看作是一个图像类的对象看作是一个图像 . pictureBox1.Image=bitmap1;3018.1.5 Bitmap类2Bitmap类常用的属性类常用的属性属性说明Palette获取或设置应用于Image对象的调色板RawFormat获取Image对象的格式Size获取Image对象的大小Width获取Image对象的宽度Height获取Image对象的高度3118.1.5 Bitmap类2 2BitmapBitmap类常用的方法类常用的方法 方法说明GetPixel获取此Bitmap中指定像素的颜色GetType获取当前实例的TypeLockBits将Bitmap对象锁定到系统内

40、存中MakeTransparent使默认的透明颜色对此Bitmap透明RotateFile将Image对象旋转、翻转或者同时旋转和翻转Image对象Save以指定的格式保存到指定的Stream对象SaveAdd将指定的Image对象中的信息添加到此Image对象中SetPixel设置Bitmap对象中指定像素的颜色SetPropertyItem将指定的属性项设置为指定的值SetResolution设置此Bitmap的分辨率3218.1.6 字体与文本1创建字体对象创建字体对象 FontFont类属于类属于System.DrawingSystem.Drawing命名空间,常用的构命名空间,常用的

41、构造函数如下:造函数如下:Public Font(string familyName,float size,FontStyle style)字体字体字号字号字形字形例:例:Font f=new Font(Font f=new Font(华文行楷华文行楷,26,FontStyle.Italic );,26,FontStyle.Italic );3318.1.6 字体与文本2字体对象的属性字体对象的属性名称说明Bold指示是否为粗体Italic指示是否为斜体UnderLine指示是否带下划线Strikeout指示是否带删除线Style获取字形Size获取字号3418.1.6 字体与文本3文本的绘制

42、方法文本的绘制方法 1、 绘制文本使用绘制文本使用DrawString()方法,其重载形式有多种,方法,其重载形式有多种,这里只介绍其中一种,该方法的语法形式如下这里只介绍其中一种,该方法的语法形式如下: public void DrawString (String s, Font font, Brush brush, Rectangle rectangle);3518.1.6 字体与文本 在窗口上输出字符串在窗口上输出字符串:private void button1_Click(object sender, EventArgs e) Graphics g = this.CreateGraph

43、ics(); SolidBrush b = new SolidBrush (Color.Red); Font f=new Font(华文行楷华文行楷,26,FontStyle.Italic ); g.DrawString(输出文字输出文字, f, b, new Rectangle(50, 30, 200, 40); b.Dispose(); f.Dispose(); g.Dispose();3618.2 基本图形的绘制 1绘制点绘制点 C#C#没有提供直接画点的函数,可以用其他方法间接画出。没有提供直接画点的函数,可以用其他方法间接画出。 Graphics g =this.CreateGrap

44、hics(); SolidBrush s = new SolidBrush(Color .Green ); g.FillRectangle(s,20,30,1,1);3718.2 基本图形的绘制 2绘制直线绘制直线绘制直线使用绘制直线使用DrawLine方法实现,通常有如下两种构造方法:方法实现,通常有如下两种构造方法:public void DrawLine(Pen pen, int x1, int y1, int x2, int y2);public void DrawLine(Pen pen, Point p1, Point p2);其中,其中,x1、y1和和x2、y2分别为起点和终点的

45、坐标值。分别为起点和终点的坐标值。p1和和p2分分别对应起点和终点。别对应起点和终点。例如:例如: Graphics g=this.CreateGraphics( ); Pen p=new Pen(Color.Red, 2); g.DrawLine(p,40, 50, 200, 300);3818.2 基本图形的绘制3绘制矩形绘制矩形使用使用DrawRectangle方法绘制矩形,其构造函数如下:方法绘制矩形,其构造函数如下:Public void DrawRectangle(Pen pen, int x, int y, int width, int height) 其中,其中,x、y为矩形左

46、上角顶点的坐标,为矩形左上角顶点的坐标,width为矩形的宽度,为矩形的宽度,height为矩形的高度。为矩形的高度。例如:例如: Graphics g=this.CreateGraphics(); Pen pen=new Pen(Color.Red,2); g.Clear(this.BackColor); g.DrawRectangle(pen,10,10,200,200);3918.2 基本图形的绘制 4绘制椭圆绘制椭圆 5绘制圆弧绘制圆弧 6绘制多边形绘制多边形 7绘制曲线绘制曲线 8画贝塞尔曲线画贝塞尔曲线 9绘制路径形成的图形绘制路径形成的图形 10填充图形填充图形4018.3 图像

47、处理 在在C#中,中,GDI+可以显示和处理多种文件类可以显示和处理多种文件类型的图像,如型的图像,如 . bmp、.jpg、.gif、.wmf、. ico 等,本节将介绍等,本节将介绍C#对这些图像文件的基对这些图像文件的基本处理操作,如图像的导入导出、放大缩小本处理操作,如图像的导入导出、放大缩小以及色彩处理(包括分辨率和对比度等)。以及色彩处理(包括分辨率和对比度等)。4118.3.1 图像的基本操作 1图像的导入图像的导入 2图像的保存图像的保存 3复制与粘贴复制与粘贴4218.3.2 图像的高级操作 1平移、缩放和旋转操作平移、缩放和旋转操作private void button1_Click(object sender, EventArgs e)Graphics g = this.CreateGraphics(); g.FillRectangle(new SolidBrush(Color.Red),120, 30, 200, 100); /矩形矩形g.RotateTransform(45.0f); /顺时针旋转顺时针旋转45g.FillRectangle(new SolidBrush(Color.Blue),120, 30, 200, 100); /水平方向向右

温馨提示

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

评论

0/150

提交评论