第四章图形、图像与多媒体.ppt

上传人:sccc 文档编号:4879633 上传时间:2023-05-21 格式:PPT 页数:54 大小:497.01KB
返回 下载 相关 举报
第四章图形、图像与多媒体.ppt_第1页
第1页 / 共54页
第四章图形、图像与多媒体.ppt_第2页
第2页 / 共54页
第四章图形、图像与多媒体.ppt_第3页
第3页 / 共54页
第四章图形、图像与多媒体.ppt_第4页
第4页 / 共54页
第四章图形、图像与多媒体.ppt_第5页
第5页 / 共54页
点击查看更多>>
资源描述

《第四章图形、图像与多媒体.ppt》由会员分享,可在线阅读,更多相关《第四章图形、图像与多媒体.ppt(54页珍藏版)》请在三一办公上搜索。

1、版权所有,1,第四章 图形、图像与多媒体,图形图像及多媒体处理也是C#的重要应用。.NET框架通过封装GDI+实现了图形图像的处理功能。利用C#可以开发出强大的图形、图像与多媒体程序。,2,版权所有,目录,GDI+概述GDI+绘图基础基本的绘图方法 图像的显示与处理声音与视频的播放,3,版权所有,4.1 GDI+概述,早期的Window程序中,可以使用GDI(Graphics Device Interface,图形设备接口)在一个窗体中绘制图形、文本和图像,但它的功能有限。GDI+是GDI的一个新版本,它不仅在GDI基础上添加许多新特性,而且对原有的GDI功能进行优化,并在为开发人员提供的二维

2、矢量图形、文本、图像处理、区域、路径以及图形数据矩阵等方面构造了一系列相关的类。其中,图形类Graphics是GDI+接口中的一个核心类,许多绘图操作都可用它完成。,4,版权所有,4.1.1 GDI+命名空间 GDI+包含大约60个类、50个枚举和8个结构。所有的函数都保存在System.Drwaing.dll程序集中。,5,版权所有,4.1.2 基本数据结构在绘图操作中,常常需要使用Point(点)、Size(大小)和Rectangle(矩形)等简单的数据结构。,6,版权所有,1Point、Size和Rectangle结构的构造函数(1)Point用来表示平面上的点或一个位置(x,y),其属

3、性有X和Y。Point(int dw):dw的低16位指定水平坐标,高16位指定垂直坐标。Point(Size sz):sz的宽度Width和高度Height用来指定Point的X和Y的值。Point(int x,int y);(2)Size结构常用来表示一个矩形的大小,其属性有Width和Height。Size(Point pt):pt的X和Y属性用来指定Size的Width和Height。Size(int width,int height);(3)Rectangle结构用来表示一个矩形的位置和大小,其属性有X、Y、Width、Height、Location、Left、Right、Top、B

4、ottom。Rectangle(int x,int y,int width,int height);Rectangle(Point locaton,Size size);,7,版权所有,2.基本运算符操作 Point、Size和Reactangle类结构重载了常用的运算符操作,如Point和Size结构的+、-、=、!=操作,Rectangle结构的=、!=操作等。这里只介绍Point和Size结构的+和-操作。(1)“+”操作 若向Point对象加上一个Size对象,则返回Point对象。例如:Drawing.Point pt=Drawing.Point(25,-18)+Drawing(10

5、,5);则结果为Point(35,-13)。若向Size对象加上一个Size对象,则是它们的宽度和高度相加。(2)“-”操作若向Point对象减去一个Size对象,则返回Point对象。例如:Drawing.Point pt=Drawing.Point(25,-19)+Drawing(15,5);,8,版权所有,3Rectangle结构的常用操作(1)扩大和缩小 使用Inflate方法。void Inflate(Size size)void Inflate(int widht,int height);(2)相交和合并 成员方法Iniersect和Union分别用来将两个矩形进行相交和合并。vo

6、id Intersect(Rectangle rect)static Rectangle Intersect(Rectangle a,Rectangle b);static Rectangle Union(Rectangle a,Rectangle b);,9,版权所有,(3)移动 Offset方法用来调整矩形的位置。void Offset(Point pos);void Offset(int x,int y);(4)测试和判断IntersectsWith方法用来判断是否和指定的矩形相交。若有相交,则返回true,否则返回false。bool IntersectWidth(Rectangle

7、rect);,10,版权所有,4.1.3 处理图形图像的步骤处理图形包括两个步骤:创建Graphics 对象;使用Graphics 对象绘制线条和形状、呈现文本或显示与操作图像。,11,版权所有,4.2 GDI+绘图基础,4.2.1 坐标系统 1全局坐标、页面坐标和设备坐标 2Grahpics与坐标系统有关的成员 3全局变换 全局坐标到页面坐标的坐标变换叫做全局变换,保存在Graphics类的Transform属性中。主要包含两种变换:平移、旋转、比例。,12,版权所有,4页面变换页面坐标的原点总是在虚拟绘图平面的左上角。由于页面坐标标度量单位是像素,所以设备坐标与页面坐标是相同的。但如果将页

8、面坐标改成其他的单位(如英寸),两者就不同了。这时发生页面坐标到设备坐标的变换称为页面变换。Graphics类的PageUnit和PageScale两个属性提供页面变换操作。,13,版权所有,【案例4-1】建立坐标系并画圆。设计一个坐标系,坐标原点在窗体的中心,单位为英才,X轴向右为正,Y轴向上为正,画出坐标轴,在此坐标系绘制一个圆,圆心在坐标圆点,半径为1英寸。,14,版权所有,4.2.2 画笔画笔是绘制各种直线和曲线的一种图形工具,它主要有线型、颜色和线宽属性。默认的线宽为1个像素,线型为实线。,15,版权所有,1建立Pen对象(1)直接使用Pen类构造函数。常用下面的三种重载形式:pub

9、lic Pen(Color c):创建某一种颜色的Pen对象。public Pen(Color c,float w):创建某一种颜色和相应宽度的Pen对象。public Pen(Brush b):创建某一刷子样式的Pen对象。public Pen(Brush b,float w):创建某一刷子样式并具有相应宽度的Pen对象。,16,版权所有,(2)从SystemPens和Pens类获取Pen对象的引用。System.Drawing.SystemPens类用于创建与用户界面单位和系统颜色相匹配的笔。该类的每一个共享属性都返回一个Pen对象的引用。例如:Pen pe=SystemPens.High

10、lightText;/画笔使用选定项的文本颜色。,17,版权所有,2Pen的常用属性Brush属性。获取或设置用于确定此Pen对象的属性的Brush对象。Color属性。获取或设置此Pen对象的颜色。Width属性。获取或设置此Pen对象的宽度。DashStyle属性。获取或设置用于通过此Pen 对象绘制的虚线的样式。DashCap属性。获取或设置用在短划线终点的帽样式,Drawing2D.DashCap枚举值。,18,版权所有,EndCap属性。获取或设置用在通过此 Pen 对象绘制的直线终点的帽样式。取Drawing2D.LineCap枚举值,如表4-4所示。StartCap属性。获取或设

11、置用在通过此 Pen 对象绘制的直线起点的帽样式。取Drawing2D.LineCap枚举值,如表4-4所示。LineJoin属性。获取或设置通过此 Pen 对象绘制的两条连续直线终点之间的联接样式。指定如何在图形(子路径)中联接连续的直线或曲线段,该图形(子路径)包含在 GraphicsPath 对象中。Drawing2D.LineJoin枚举值。,19,版权所有,2画刷Brush类决定如何填充图形形状(如矩形、椭圆形、扇形、多边形和封闭路径)内部。这是一个抽象基类,不能进行实例化。若要创建一个画刷对象,可使用从Brush派生出的类。这些派生类主要有:SolidBrush(单色画刷)、Tex

12、tureBrush(纹理画刷)、HatchBrush(阴影画刷)、LinearGradientBrush(线性渐变画刷)、PathGradientBrush(路径渐变画刷)。前两个定义在System.Drawing命名空间中,后三个定义在System.Drawing.Drawing2D命名空间中。,20,版权所有,4.3基本的绘图方法,4.3.1 绘制线条或形状 1画直线使用Graphics的DrawLine方法可以绘制直线。public void DrawLine(Pen pen,int x1,int y1,int x2,int y2):绘制一条连接由坐标对指定的两个点的线条。public

13、void DrawLine(Pen pen,float x1,float y1,float x2,float y2):绘制一条连接由坐标对指定的两个点的线条。public void DrawLine(Pen pen,Point p1,Point p2):绘制一条连接两个Point结构的线。,21,版权所有,2画椭圆使用Graphics的DrawEllipse方法可以绘制椭圆。public void DrawEllipse(Pen pen,Rectangle rect):绘制边界Rectangle结构指定的椭圆。public void DrawEllipse(Pen pen,int x,int

14、y,int w,int h):绘制一个由边框(该边框由一对坐标、高度和宽度指定)定义的椭圆。public void DrawEllipse(Pen,float,float,float,float):绘制一个由边框(该边框由一对坐标、高度和宽度指定)定义的椭圆。,22,版权所有,3绘制圆弧使用Graphics的DrawArc方法可以绘制圆弧。public void DrawArc(Pen pen,Rectangle rect,float startAngle,float sweepAngle):绘制一段弧线,它表示Rectangle结构指定的椭圆的一部分。public void DrawArc(

15、Pen pen,int x,int y,int w,int h,int startAngle,int sweepAngle):绘制一段弧线,它表示由一对坐标、宽度和高度指定的椭圆部分。public void DrawArc(Pen pen,float x,float y,float w,float h,float startAngle,float sweepAngle):绘制一段弧线,它表示由一对坐标、宽度和高度指定的椭圆部分。,23,版权所有,4画扇形图 使用Graphics的DrawPie方法可以绘制扇形图,所谓扇形图其实质就是一段圆弧的两个端点与圆心相连。DrawPie方法的格式与Dra

16、wArc方法基本一致。,24,版权所有,5画矩形使用Graphics的DrawRectangle方法可以绘制矩形。public void DrawRectangle(Pen pen,Rectangle r):绘制由Rectangle结构指定的矩形。public void DrawRectangle(Pen pen,int x,int y,int w,int h):绘制由坐标对、宽度和高度指定的矩形。public void DrawRectangle(Pen pen,float x,float y,float w,float h):绘制由坐标对、宽度和高度指定的矩形。,25,版权所有,6画多边形

17、使用Graphics的DrawPolygon方法可以绘制多边形。public void DrawPolygon(Pen pen,Point p):绘制由一组Point结构定义的多边形public void DrawPolygon(Pen pen,PointF p):绘制由一组PointF结构定义的多边形。,26,版权所有,7画贝塞尔样条曲线使用Graphics的DrawBezier方法可以绘制贝塞尔样条曲线。public void DrawBezier(Pen pen,Point p1,Point p2,Point p3,Point p4):绘制由 4 个Point结构定义的贝塞尔样条。pub

18、lic void DrawBezier(Pen pen,PointF p1,PointF p2,PointF p3,PointF p4):绘制由 4 个PointF结构定义的贝塞尔样条。public void DrawBezier(Pen pen,float x1,float y1,float x2,float y2,float x3,float y3,float x4,float y4):绘制由四个表示点的有序坐标对定义的贝塞尔样条。,27,版权所有,8绘制闭合曲线使用Graphics的DrawClosedCurve方法可以闭合曲线。public void DrawClosedCurve(P

19、en pen,Point p):绘制由 Point结构的数组定义的闭合基数样条。public void DrawClosedCurve(Pen pen,PointF p):绘制由PointF结构的数组定义的闭合基数样条。public void DrawClosedCurve(Pen pen,Point p,float t,FillMode fm):使用指定的张力绘制由Point结构数组定义的闭合基数样条。public void DrawClosedCurve(Pen pen,PointF p,float t,FillMode):使用指定的张力绘制由 PointF结构数组定义的闭合基数样条。,2

20、8,版权所有,9绘制非闭合曲线使用Graphics的DrawCurve方法可以非闭合曲线。参数格式同上述绘制闭合曲线的第一个方法。10绘制路径使用Graphics的DrawPath方法可以绘制路径。路径是直线、矩形、多边形或曲线等组成。public void DrawPath(Pen pen,GraphicsPath path):绘制GraphicsPath对象。,29,版权所有,11绘制填充图形和上述方法对应的,还有一组Fill开头的方法,可以用来绘制填充图形。例如:FillEcllips方法可以绘制填充椭圆。,30,版权所有,【案例4-2】绘制一个小汽车。利用基本的绘图方法,在界面上绘制一

21、个小车。,31,版权所有,【案例4-3】一个简单的绘图程序。本案例是一个简单的绘图程序,能够利用鼠标任意画,能够画直线、椭圆及矩形,可以设置色彩。,32,版权所有,4.3.2 绘制文字可以使用任何图形对象作为绘制文本的表面。绘制文本需要一个Brush对象(它指示将使用什么图案填充文本)和一个Font对象(它描述要填充的图案)。字体可以是系统上安装的任何已命名的字体,而画笔可以为任意类型的画笔。因此,有可能使用纯色、图案或者甚至图像来绘制文本。,33,版权所有,4.4图像的显示与处理,4.4.1图像的显示1Bitmap类Bitmap类封装GDI+位图,此位图由图形图像及其属性的像素数据组成。Bi

22、tmap对象是用于处理由像素数据定义的图像的对象。可以从各种各样的图形文件格式(BMP、GIF、JPEG、EXIF、PNG、TIFF和ICON)中构造Bitmap对象。,34,版权所有,(1)主要的属性Flags:获取此Image 对象的属性标记。Height:获取此Image 对象的高度。Palette:获取或设置用于此Image 对象的调色板。RawFormat:获取此Image对象的格式。Size:获取此图像的以像素为单位的宽度和高度。Width:获取此Image 对象的宽度。,35,版权所有,(2)主要的方法Clone():创建此Bitmap(用指定的 PixelFormat 定义)部

23、分的副本。FromHicon():从图标的 Windows 句柄创建 Bitmap。FromResource():从指定的 Windows 资源创建 Bitmap 对象。GetBounds():以指定的单位获取此Image 对象的边框。GetPixel():获取此Bitmap中指定像素的颜色。GetThumbnailImage():返回此Image 对象的缩略图。Save():将此图像以指定的格式保存到指定的流中。SetPixel():设置Bitmap对象中指定像素的颜色。,36,版权所有,2图像的显示若使用Image来显示图像。可以用Image的静态方法FromFile()来加载图像文件。如

24、:Image im=Image.FromFile(“c:ba.jpg”);g.DrawImage(im,0,0);,37,版权所有,4.4.2 保存、拷贝和粘贴保存图像可以使用Bitmap的Save方法。例如:pictureBox1.image.Save(c:myimage.bmp);在保存图像时,还可以指定图像文件的格式。例如:pictureBox1.image.Save(c:myimage.bmp);pictureBox1.image.Save(c:myimage.bmp);pictureBox1.image.Save(c:myimage.bmp,ImageFormat.Jpeg);,38

25、,版权所有,Bitmap 类提供了Clone方法,可用于制作现有Bitmap对象的副本。Clone方法带有源矩形参数,可用于指定要复制的原始位图的部分。下面的示例通过拷贝现有 Bitmap对象的上半部分来创建Bitmap对象。然后绘制两幅图像。,39,版权所有,4.4.3 图像处理1彩色图像变成灰度图像将彩色图像像素值分解为三基色R、G、B,求其和的平均值,然后使用SetPixel方法以该平均值参数生成图像。对一个像素的处理过程如下:(1)取颜色值Color c=im.GetPixel(i,j);/im为Bitmap类型对象,40,版权所有,(2)分解颜色值int r=c.R;int g=c.

26、R;int b=c.R;(3)取平均,生成新的颜色int cc=(r+g+b)/3;Color c1=Coloe.FromArgb(cc,cc,cc);(4)设定图像颜色im1.SetPixel(i,j,c1);/im1是im的复制,41,版权所有,2对图像进行浮雕处理 将彩色图像像素值分解为三基色R、G、B,分别与相邻像素的三基色R、G、B相减后加上一个常量(128)。然后作为新的像素的RGB颜色值(为了防止颜色溢出,需处理小于0和大于255的颜色值)。对一个像素的处理过程如下:(1)取两个像素的颜色值Color c1=im.GetPixel(i,j);/im为Bitmap类型对象Color

27、 c2=im.GetPixel(i+1,j+1);/取相邻像素的颜色值,42,版权所有,(2)对两个像素的颜色值进行分解,相减后加上128,int r=Math.Abs(c1.R-c2.R)+128;int g=Math.Abs(c1.G-c2.G)+128;int b=Math.Abs(c1.B-c2.B)+128;(3)处理后生成新的颜色if(r255)r=255;if(g255)g=255;if(b255)b=255;Color cc=Coloe.FromArgb(r,g,b);(4)设定图像颜色im1.SetPixel(i,j,cc);/im1是im的复制,43,版权所有,3图像的透明

28、度处理取出颜色值后,再给定一个透明度的值,利用Color.FromRgb(int a,Color c)方法即可生成目标图像的颜色值。从而实现不同的透明效果。参数a的取值在0255之间。c=im.GetPixel(i,j);Color cc=Color.FromArgb(a,c);im.SetPixel(i,j,cc);,44,版权所有,4图像的旋转与拉伸图像的旋转可以使用Image类的RotateFlip方法实现,它只有一个RotateFlipType枚举参数,用来指定图像的旋转和翻转的类型。,45,版权所有,5图像格式转换GDI+的Image类中有一个Save方法,它可以用来将图像按指定的格

29、式保存文件中。格式如下:void Save(string filename,ImageFormat format);其中,filename用来指定要保存的文件名,format用来指定要保存的格式,可以直接引用ImageFormat类的静态成员属性来指定。,46,版权所有,【案例4-4】图像处理程序。创建一个Windows应用程序,在窗体上添加两个图片框和三个按钮。第一个图片显示原图像,第二个图片框显示处理后的图像。,47,版权所有,4.5 声音与视频的播放,4.5.1 Media Player控件及其使用 在C#中,可以引用Windows自带的Windows Media Player组件播放多

30、种格式的视频和音频文件,包括MPEG视频、AVI、WAV和MIDI等格式的文件。,48,版权所有,1添加Windows Media Player控件Windows Media Player控件不是标准控件,在工具箱中无法找到,在使用该控件之前需把他加载到工具箱中。加载方法如下:(1)执行“工具”“添加/移出工具箱”菜单命令,打开如图4-25所示的“自定义工具箱”对话框。(2)在“自定义工具箱”对话框的“COM组件”选项卡中选择“Windows Media Player”控件,并单击“确定”按钮,则将Windows Media Player控件添加到工具箱中。(3)在工具箱中找到Windows

31、Media Player控件,将控件添加到窗体上。,49,版权所有,2.Windows Media Player控件的常用属性和方法(1)常用的属性AutoRewind:用来设置多媒体文件在播放完成时是否自动回到起始位置。Displaysize:用来设置屏幕的大小。主要的取值有:MpDefaultsize(正常大小)、MpFullscreen(全屏)、MpFitTosize(自定义大小)。Dock:用来指定控件在窗体中的位置模式。其中,Fill为指定其充满整个窗体。Mute:用来设置是为静音状态。默认为false.PlayCount:用来设置控件的播放次数。AutoStart:用来设定是否自动

32、播放。默认为true。FileName:用来设置要播放的文件。PlayState:用来检测控件当前的播放状态。DisplayMode:用来确定是以帧的形式还是以时间的形式显示速度。,50,版权所有,(2)常用的方法Play():用来播放多媒体文件。Pause():用来暂停多媒体文件的播放。Stop():用来停止对多媒体文件的播放。,51,版权所有,【案例4-5】用Media Player控件播放视频文件。建立Windows程序。窗体上添加一个Media Player控件和三个按钮。三个按钮分别用于打开、播放和停止视频文件的播放。,52,版权所有,4.5.2 ShockwaveFlash控件及其使用ShockwaveFlash控件可用来播放Flash文件。该控件也是一个扩展的控件,使用时,需要先添到工具箱中。添加方法类似于Windows Media Player。不同的是在“COM组件”选项卡中选择“Shockwave Flash Object”控件。,53,版权所有,【案例4-6】Flash文件播放器。建立一个Windows应用程序,窗体上放置7个按钮和1个ShockwaveFlash控件,能够播放Flash动画。,54,版权所有,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 建筑/施工/环境 > 农业报告


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号