GDI+图形图像编程目录5.图像4.文本和字体3.图形绘制2.画笔和画刷1..NET图形图像编程概述1.NET图形图像编程概述什么是GDI+想一下,如果同学们要进行绘画,你要准备什么工作?怎么样开始绘画呢?1.数据绑定概述1.GDI+技术简介GDI:GraphicsDeviceInterface图形设备接口GDI+是一种构成WindowsXP操作系统的子系统的应用程序编程接口GDI+负责在屏幕上合打印机上显示信息GDI+是.NETFramework的重要组成部分,提供对二维图形和文字排版的处理和支持使用DirectX处理三维(3D)的图形图像通过GDI+可以创建与设备无关的应用程序。图形图像处理用到的主要命名空间是System.Drawing:提供了对GDI+基本图形功能的访问2.GDI+新特性GDI提供的新特性Alpha混合技术反锯齿处理能力渐变色和纹理填充款线条基本集合曲线样式可缩放区域浮点数坐标嵌入画笔高质量过滤和缩放多种线条样式和端点选项2.数据绑定概述.NET框架命名空间System.DrawingSystem.Drawing2DSystem.Drawing.ImagingSystem.Drawing.Text提供了对GDI+基本图形功能的访问,对于进行一般的图形绘制来说足够了!提供高级的二维和矢量图形功能。提供高级GDI+图像处理功能。提供GDI+高级排版功能。该命名空间允许用户使用多种字体,GUI+的基础知识坐标颜色尺寸点画板笔刷子1.坐标,颜色,尺寸,点3.坐标系统GDI+在坐标系统中绘制直线和其他图形。我们可以从各种各样的坐标系统中选择。而默认的坐标系统的原点在左上角,x指向右边,y指向左边。(0,0)xy4.SYSTEM.DRAWING中常用的结构Color:—Color封装了对颜色的定义。该结构封装了数百个分别对应于标准调色板色彩的静态成员。如:Color.Red代表红色,Color.Blue代表蓝色—有用的静态方法:FromArgb:通过三原色构件Color对象FromKnownColor:通过已知颜色构建Color对象FromName:通过颜色名称来构建Color对象—例子:Colortemp1=Color.BlackColortemp2=Color.FromArgb(0,0,0)Colortemp3=Color.FromName(“Black”)4.SYSTEM.DRAWING中常用的结构Size和SizeF:—表示绘制平面上的一个尺寸。一个整数,或者一个浮点数。—构造函数:Sizesize=newSize(10,10)—属性:Width:宽度Height:高度—重载了加、减、赋值操作Sizesize2=size1Sizesize3=size1-size2Sizesize4=size1+size24.SYSTEM.DRAWING中常用的结构Point和PointF:—表示绘制平面上点的坐标,一个为整数,另一个为浮点数。—构造函数:Pointpoint=newPoint(20,20)Pointpoint2=newPoint(newSize(10,10))—属性:Width:宽度Height:高度—重载了加、减、赋值操作2.画板画板创建一个画板主要有3种方式:A:在窗体或控件的Paint事件中直接引用Graphics对象B:利用窗体或某个控件的CreateGraphics方法C:从继承自图像的任何对象创建Graphics对象5.GRAPHICS类使用GDI+绘图,首先要创建Graphics类Graphics使用的两种方法(模板)OnPaint事件中使用privatevoidForm1_Paint(objectsender,PaintEventArgse){Graphicsg=e.Graphics;}在其他情况使用Graphicsg=this.CreateGraphics()try{//绘图}Finally{g.Dispose();}5.GRAPHICS类Graphics类的对象绘图方法DrawArc:绘制圆弧DrawBezier:绘制贝塞尔曲线DrawBeziers:绘制贝塞尔曲线组DrawClosedCurve:绘制封闭曲线DrawCurve:绘制曲线DrawEllipse:绘制椭圆DrawIcon:绘制图标DrawIconUnstretched:无缩放绘制图标DrawImage:绘制图像DrawImageUnscaled:无缩放绘制图像DrawLine:绘制直线DrawLines:绘制直线组DrawPie:绘制圆饼DrawPolygon:绘制多边形DrawRectangle:绘制矩形DrawRectangles:绘制矩形组DrawString:绘制文本5.GRAPHICS类Graphics类的对象对实心图形方法FillClosedCurve:绘制圆弧FillEllipse:封闭实心椭圆FillPath:GraphicsPath对象FillPie:绘制实心圆饼FillPolygon:绘制实心多边形FillRectangle:绘制实心矩形FillRectangles:绘制实心矩形组FillRegion:绘制实心region组5.GRAPHICS类Graphics类的对象对实心图形方法FillClosedCurve:绘制圆弧FillEllipse:封闭实心椭圆FillPath:GraphicsPath对象FillPie:绘制实心圆饼FillPolygon:绘制实心多边形FillRectangle:绘制实心矩形FillRectangles:绘制实心矩形组FillRegion:绘制实心region组2.画笔和画刷4.SYSTEM.DRAWING中常用的结构1.Pen—在System.Drawing命名空间中—用来指定图形的轮廓,如颜色和宽度等—画笔的创建有四种构造函数Publicpen(color);Publicpen(color,width);Publicpen(brush);Publicpen(brush,width);BRUSH类Brush类是一个抽象的基类,因此不可以?为了创建Brush类的对象,必须用派生类Brush可使用其输出“绘制”或“填充”区域。画笔不同,其输出类型也不同。某些画笔使用纯色绘制区域,其他画笔则使用渐变、图案、图像或绘图绘制区域BRUSH类下面的列表描述了普通类型的画笔:•SolidBrush用一种单色填充图形。•TextureBrush用一个位图填充图形。在构造这个画笔时,还指定了边框矩形和填充模式。边框矩形指定画笔使用位图的哪一部分--可以不使用整个位图。填充模式有许多选项,如Tile平铺纹理,TileFlipX、TileFlipY和TileFlipXY指定连续平铺时翻转图像。使用TextureBrush可以创建出非常有趣和富有想像力的效果。•LinearGradientBrush封装了一个画笔,该画笔可以绘制两种颜色渐变的图形,其中第一种颜色以指定的角度逐渐过渡到第二种颜色。角度的单位是度。0?表示颜色从左向右过渡。90°表示颜色从上到下过渡。•HatchBrush用阴影样式、前景色和背景色定义矩形画笔。•PathGradientBrush封装System.Drawing.Brush对象,它通过渐变填充System.Drawing.Drawing2D.GraphicsPath对象的内部。无法继承此类。4.SYSTEM.DRAWING中常用的结构属性:StartCap与EndCap绘制线条的起点和终点类型值为:枚举类型的LineCapDashStyle:会直线条的虚线类型(可以自定义)Custom:用户自定义Dash:线条由线段组成DashDot:线条由点组成DashDotDot:线条由线段,点和点组成Dot:线条由点组成Solid:由实线组成Alignment:相对于理论上的,零宽度的线条的Pen对象的对齐方式值为(System.Drawing.Drawing2D.PenAlignment)Center:位于所绘制线条的中央Insert:位于所绘线条的嵌入内部Left:位于所绘线条的左侧OutSet:位于所绘线条的嵌入外部Right:位于所绘线条的右侧开始画吧!!1:画一条直线DrawLine2:画一个矩形DrawRectangle3:画一条曲线DrawCurve练习代码privatevoidForm1_Paint(objectsender,PaintEventArgse){Graphicsgr=e.Graphics;//创建画板Penp=newPen(Color.Red);p.DashStyle=DashStyle.Custom;gr.DrawLine(p,0,0,100,100);gr.DrawRectangle(Pens.Red,0,0,100,100);Point[]p0=newPoint[]{newPoint(10,220),newPoint(200,200),newPoint(330,230),newPoint(110,250)};gr.DrawCurve(p,p0);gr.Dispose();}思考题目: