您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 广告经营 > C程序设计简明教程-第5章图形图像编程
GDI+是GDI(GraphicsDeviceInterface,图形设备接口)的改进产品。在C#.NET中,使用GDI+处理二维(2D)的图形和图像使用DirectX处理三维(3D)的图形图像,GDI+的绘图命名空间:System.DrawingSystem.Drawing.TextSystem.Drawing.ImagingSystem.Drawing.Drawing2D例5.1第5章图形图像编程1.GDI+的概念(1)要画图,要画布(板)吧,用Graphics这个类创建(2)然后用画笔Pen,画刷Brush等进行绘画(3)还可以用颜料,用Color类.Font类2.准备画布、画笔和颜料方法一般有三种:(1)利用窗体或控件的Paint事件的参数PaintEventArgs创建Graphics对象。(在窗体加载时就得到的)privatevoidForml_Paint(...){Graphicsg=e.Graphics;}3.创建Graphics对象(准备画布)(2)使用窗体或控件的CreateGraphics方法Graphicsg;g=this.CreateGraphics();(3)使用Image的派生类创建Graphics对象,一般适用于在C#中对图像进行处理:Bitmapb=newBitmap(Mybmp.bmp);Graphicsg=Graphics.FromImage(b);章节目录上一页下一页54.坐标系及平移、旋转与缩放绘图时有时需要一个坐标系来参照,C#默认的坐标原点是左上角,向右为X正向坐标,向下为Y下向坐标,Graphics类提供了三种对图像进行几何变换的方法,它们是:TranslateTransform()方法,作平移RotateTransform()方法,作旋转ScaleTransform()方法,作缩放(以坐标系原点为中心)P149页表例5.2用于绘制线条、勾勒形状轮廓或呈现其他几何表示形式。画笔通常具有宽度、样式和颜色三种属性。(1).创建画笔对象Penpen1=newPen(Color.Green)(3)也可以创建某一颜色和相应宽度的Pen对象:publicPen(Color,float)如Penp=new(Color.Blue,2);(3)还可以创建某—刷子样式并具有相应宽度的Pen对象:publicPen(Brush,float)5.创建画笔对象Pen76.GDI+中常用结构•1.点•Point(x,y)•PointF(x,y)•2.矩形•Rectangle(x,y,width,height)•RectangleF(x,y,width,height)•3.Sizes=newSize(width,height)•4.Color•有三种方式•P152表,例5.3画笔pen还提供SetLineCap()方法来设置一条直线的起始端和终止端的样式,格式为:画笔对象.SetLineCap(StartCarp,EndCarp,DashCap)其中EndCarp为终点样式,DashCap为终点形状例5.37在画布上通过画笔来画一些几何图形的方法P154DrawLine(笔,起点,终点)画线DrawRangle(笔,起点,宽,高)画矩形DrawEellipse(笔,矩形)画椭圆DrawArc(笔,矩形,起始角,扫过的度数)画圆弧DrawPie(笔,矩形,起始角,扫过的度数)画扇形轮廓DrawPolygon(笔,point数组)画多边形DrawCurve(笔,point数组)画曲线DrawCloseCurve(笔,point数组)画封闭曲线例5.4画随圆例:Graphicsg=e.Graphics;g.DrawEllipse(p,10,10,100,60);.可以用画刷在画布上画图和写字SolidBrushsb=newSolidBrush(Color.Red);Fontf=newFont(宋体,10,FontStyle.Bold);g.DrawString(GDI+绘图,f,sb,50,35);.画完后释放相关资源p.Dispose();sb.Dispose();f.Dispose();g.Dispose();118.图形填充_Brush对象主要讲画刷,用于填充封闭图形和呈现文本,必须在文件头加引用:System.Drawing.Drawing2D命名空间Brush是抽象类,一般使用它的派生类,派生类主要有:1.SolidBrush画刷SolidBrush类用来定义单一颜色的Brush,构造函数如下:publicSolidBrush(Color.Color)例如:SolidBrushMyBrush=newSolidBrush(Color.Blue);该语句创建了一个名为MyBrush的蓝色画刷。2.HatchBrush画刷(网格画刷)publicHatchBrush(HatchStyle,FColor,BColor);12HatchBrush画刷具有三个属性,分别如下:(1)BackgroundColor属性:获取此HatchBrush对象的背景色。(2)ForegroundColor属性:获取此HatchBrush对象的前景色。(3)HatchStyle属性:获取此HatchBrush对象的阴影样式。例如,有下列语句:HatchBrushHb=newHatchBrush(HatchStyle.Cross,Color.Blue);该语句创建一个名为Hb的画刷对象,该画刷的前景色为蓝色,填充样式为十字交叉。3.渐变画刷TextureBrushTbh=newTextureBrush(newBitmap(图形名));4.纹理画刷LinearGradientBrushlgb=newLinearGradientBrush(起点,终点,前景色,背景色)绘图填充方法P157FillRectangle(画刷,矩形)FillEllipse(画刷,矩形)FillPic(画刷,矩形,起始角,扫过的度数)FillPolygon(画刷,point数组)FillClosedCurve(画刷,point数组)例5.55.6文本输出1.字体对象FontFontf1=newFont(字体,字号,字形)2.绘制文字画布对象.DrawString(字符串,字体,画刷,起点坐标)3.例5.75.85.3图像处理1.加载和显示图片用System.Drawing.Imaging空间,创建Bitmap对象,可以使用Graphics对象的DrawImage()方法:Graphicsg=this.CreateGraphics();Bitmappic=newBitmap(fruit.jpg);g.DrawImage(pic,5,5,300,200);2.裁切和缩放图像用g.DrawImage方法,放大缩小或翻转:g.DrawImage(图像,起点,宽,高)用g.DrawImage方法,剪切:g.DrawImage(图像,目标矩形,源矩形,绘制单位)用图像对象进行旋转、反射、和扭曲图像对象.RotateFlip(枚举类型.成员)例5.95.10,5.11非规则图形:用窗体对象的Region属性例5.12
本文标题:C程序设计简明教程-第5章图形图像编程
链接地址:https://www.777doc.com/doc-2907630 .html