登陆注册
36209800000025

第25章 多媒体编程(1)

本章要点

Image组件和图像显示

图形的绘制

声音的操作

Mediaplayer组件的使用

多媒体,是指用文字、图形、声音、图像、动画、视频等多种媒体作为承载信息的载体。

多媒体技术在计算机中的应用,改变了由“文字”单一媒体作为计算机交互手段的状况,开辟了计算机更加丰富多彩的应用领域。

Delphi集成开发环境提供的强大多媒体功能,为人们进行多媒体应用程序设计提供了很大的方便。

本章将介绍用Delphi进行多媒体应用程序设计的基本方法。

11.1Image组件和图像显示

Image组件位于组件模板的【Additional】选项卡上,其图标为。

Image组件是一个容器组件,利用它的Picture属性,可以显示一个图形或图像,也可以用来绘制位图。

11.1.1Image组件的属性

1.AutoSize属性

AutoSize属性决定组件是否自动调节尺寸以适应图像的大小。该属性为布尔型属性,若属性值为True,则组件会自动调节尺寸以适应图像的大小。其默认值为False。

2.Center属性

Center属性决定组件是否居中显示图像。该属性为布尔型属性,若属性值为True,组件居中显示图像;否则,在组件的左上角显示图像。其默认值为False。

3.Picture属性

Picture属性用来指定组件中显示的图像。

设置Image组件的Picture属性,也称为Image组件装入图像,方式有两种。

第一种方式,在程序设计时装入,是在程序设计时,通过设置组件的Picture属性,装入要显示的图像。激活Image组件,在对象检查窗口中,单击组件的Picture属性值栏右端的【…】

按钮,打开【PictureEditor】对话框,如图11-1所示。

在对话框中,单击【Load】按钮,打开【LoadPicture】对话框,如图11-2所示。

在对话框中,找到图像文件存放的位置,选择要显示的图像的文件类型和文件名,单击【打开】按钮,关闭该对话框,选择的图像显示在图11-1的对话框中,如图11-3所示。

单击【OK】按钮,关闭该对话框,装入的图像显示在Image组件中。如果装入之前,没有正确地设置AutoSize属性或下面要介绍的Stretch属性,组件只显示了图像的一部分或者图像只占据了组件的一部分,正确设置这两个属性,就可以完整显示图像了。

第二种方式,在程序运行时装入,是在程序代码中使用组件的LoadFromFile方法实现的,格式为:

LoadFromFile(图像文件的完整路径名)。

为了动态地选择要显示的图像文件,可以用打开图像文件对话框(OpenPictureDialog)来实现,将在后面的程序举例中介绍。

4.Stretch属性

Stretch属性决定显示的图像是否自动调节自身的尺寸以充满整个组件范围。该属性为布尔型属性,若属性值为True,图像自动充满整个组件范围;否则,图像按原来的尺寸显示,即要么尺寸太大,组件只显示图像的一部分,要么尺寸太小,图像只占据组件的一部分。其默认值为False。

11.1.2Image组件显示图像编程举例

例11-1用Image组件显示图像,并可控制图像按原尺寸显示或充满Image组件显示。

(1)新建一个项目,创建一个新窗体Form1。

(2)设置窗体属性,必要的窗体属性如表11-1所示。

(3)向窗体中添加组件。

根据程序功能要求,向窗体中添加1个Image组件--Image1、1个OpenPictureDialog组件--OpenPictureDialog1、3个Button组件--Button1、Button2和Button3,Button1组件用来打开图像文件,Button2组件用来控制充满Image显示或按原尺寸显示,Button3组件用来退出应用程序。

(4)设置组件属性,各组件属性如表11-2所示。

按功能要求,程序开始运行时,Button2的Caption属性为“充满”,即初始图像是按原尺寸显示的,Image1的Stretch属性应为False。按对话框第1章中所讲的方法设置OpenPictureDialog1的有关属性。

设置了属性的窗体如图11-4所示。

(5)选择事件并编写事件响应代码。

(6)保存单元文件为Unit11a.pas,项目文件为Project11a.dpr。

(7)编译、运行程序。在程序窗口中,单击【显示】按钮,打开【打开】对话框,在对话框中选择要显示的图像,然后单击对话框的【打开】按钮,选择的图像按原尺寸显示在程序窗口的Image组件中,如图11-5所示;单击【充满】按钮,图像充满Image组件显示,按钮变为【还原】,如图11-6所示;再单击【还原】按钮,图像又按原尺寸显示,如图11-5所示。

图11-5图像按原尺寸显示在Image组件中图11-6图像充满Image组件显示在Delphi集成开发环境中,与图形绘制有关的组件或对象有Shape(几何图形组件)、Canvas(画布对象)和Image(图像组件)。

11.2.1Delphi的坐标系统

坐标系统是图形设计的基础,绘制图形就要涉及坐标系统。本节首先简单介绍Delphi的坐标系统。

Delphi中有两个坐标系统:屏幕坐标系统和对象坐标系统。

屏幕坐标系统用于窗体在屏幕中的定位。屏幕左上角为屏幕坐标系统的坐标原点(0,0),X轴正方向水平向右,Y轴正方向垂直向下。窗体的Top、Left、Width、Height属性确定它在屏幕中的位置和大小,它们的值(其值是以像素--Pixel为单位)都是相对于屏幕坐标的原点而言的。

窗体中的组件在窗体中的位置及组件中的对象在组件中的位置,都是用对象坐标系统来表示的。对象坐标系统是相对坐标系统,它是指对象在其父对象中的位置。父对象的左上角为其对象坐标系统的原点,X轴的正方向水平向右,Y轴的正方向垂直向下,其坐标值也是以像素为单位。

11.2.2用Shape组件绘制几何图形

Shape组件位于组件模板Additional选项卡上,其图标为。

Shape组件可以在窗体、Panel(面板)组件上绘制一些常见的几何图形,如圆、椭圆、正方形、矩形等。

1.Shape的属性

1)Shape属性

Shape属性指定Shape组件绘制的几何图形的类型。该属性为枚举型属性,有stCircle(圆)、stEllipse(椭圆)、stRectangle(矩形)、stRoundRect(圆角矩形)、stRoundSquare(圆角正方形)和stSquare(正方形)6种取值。

2)Pen属性

Pen(称画笔)属性决定Shape组件绘制的几何图形的外框特性,如颜色、线型、线宽等。

该属性为集合型属性,包含4个子属性:Color、Mode、Style、Width,分别指定画笔的颜色、画笔与窗体上原有点的混合方式、线型、线宽。除Width外,其他子属性都为枚举型,用户可根据需要从列举的属性值中选择。

3)Brush属性

Brush属性决定Shape组件绘制的几何图形内填充的图案类型和颜色。该属性为集合型属性,包含2个子属性:Style和Color,分别决定填充图案的类型和颜色。这两个子属性都为枚举型属性,用户可根据需要从列举的属性值中选择。

2.用Shape组件绘制集合图形编程举例例11-2用Shape组件绘制几何图形,并可选择其几何图形的类型、边框颜色、填充图案和颜色。

(1)新建一个项目,创建一个新窗体Form1。

(2)设置窗体属性,如Caption属性值设置为:几何图形绘制等。

(3)向窗体中添加组件。

根据程序功能要求,向窗体中添加一个Shape组件(Shape1)、4个Label组件(Label1、Label2、Label3、Label4)、4个ComboBox组件(ComboBox1、ComboBox2、ComboBox3、ComboBox4)、一个Button组件(Button1)。

(4)设置窗体中组件的属性。

属性设置如表11-3所示。

(5)选择事件,编写事件过程代码。

对Button1,选择OnClick事件,事件响应过程为Button1Click,代码为:

(6)保存单元文件为Unit11b.pas,项目文件为Project11b.dpr。

(7)编译、运行程序。在程序窗口中,分别从【几何图形选择】、【画笔颜色选择】、【填充图案选择】、【填充颜色选择】组合框中选择相应的值,然后单击【画图】按钮,窗口画出相应的几何图形,如图11-8所示。

当然,这个程序实际应用价值不大,在这里只是说明Shape组件的使用方法。

11.2.3用Canvas对象绘图

Canvas(称为画布)不是一个组件,它只是绘图区域组件如Form、PaintBox(画板)等的成员,通常称为Canvas对象。

Canvas对象是Delphi中最重要的绘图工具。用Canvas对象绘图时,Canvas前面要加使用的绘图区域组件,如Form1.Canvas.…或PaintBox1.Canvas.…,默认的绘图区域组件为Form,可以省略。由于Canvas不是组件,所以无法在设计时通过对象检查器设置属性,只能在程序代码中设置。

1.Canvas对象的属性

Canvas对象的属性决定绘图使用的颜色、图案等。

1)Pen属性

Pen属性决定绘图时使用的线条的特性。该属性为集合型属性,包含Color、Style、Width和Mode4个子属性,分别决定线条的颜色、类型、宽度和模式。这4个子属性,除Width外,都是枚举型属性。

Color子属性的设置有两种方式,一种方式是使用Delphi定义的常量,其常用的取值及其含义如表11-4所示。

3)Font属性

Font属性决定绘制文本时的字体特性。同其他组件的Font属性一样,也是包含Name(字体名称)、Style(字形)、Size(字号)、Color(颜色)等子属性的集合型属性,这里不再赘述。

4)Pixels属性

Pixels属性指定绘图区域组件上一个像素的位置,该位置用其坐标值来表示,如PaintBox1.Canvas.Pixel[15,20],指定PaintBox1对象坐标系统中(15,20)处的一个像素。

2.用Canvas的方法绘图

用Canvas对象绘图,要用Canvas对象的方法。

1)绘制直线

绘制直线,要用Canvas对象的两个方法:MoveTo(x1,y1)和LineTo(x2,y2),其中x1、y1、x2、y2为表示坐标位置的整数值,MoveTo(x1,y1)决定直线的起始点,LineTo(x2,y2)决定直线的终止点,如要在PaintBox1上画一条(10,15)到(150,100)的直线,则代码为:

PaintBox1.Canvas.MoveTo(10,15);PaintBox1.Canvas.LineTo(150,100);若画的直线有颜色、线型、线宽的要求,还需先设置Pen属性。

在实际的绘图应用程序中,鼠标被用做绘图工具,通过鼠标位置的变化来绘制不同的图形。

鼠标有3个动作:鼠标按钮按下、鼠标移动、鼠标按钮放开。对应这3个动作,有3个不同的事件:OnMouseDown、OnMouseMove、OnMouseUp。

当应用程序检测到一个鼠标动作时,传递以下5个参数。

Sender--指出产生鼠标动作的组件对象。

Button--指出鼠标的按钮:左键、中键、右键。

Shift--鼠标动作时,键盘的Alt、Ctrl、Shift键和鼠标按钮的状态。

X、Y--事件发生时,鼠标的坐标。

其中:

Button参数为枚举类型,有mbLeft、mbMiddle、mbRight共3种取值,分别表示左、中、右键。

Shift参数为集合类型,由ssShift、ssAlt、ssCtrl、ssLeft、ssRight、ssMiddle、ssDouble组成。

例11-3设计一个简单的用鼠标在窗体上绘制直线的程序。

(1)新建一个项目,自动创建一个窗体Form1。

(2)在单元文件Unit1.pas的public域中,增加如下代码:

2)绘制折线

绘制折线,用Canvas对象的Polyline方法,语句格式为:

Canvas.Polyline(Point(x1,y1),Point(x2,y2),…,Point(x,y));其中(x1,y1),(x2,y2),…,(x,y)分别为折线的各个转折点的坐标。

3)绘制矩形

绘制矩形,用Canvas对象的Rectangle方法,语句格式为:

Canvas.Rectangle(x1,y1,x2,y2);其中(x1,y1)为矩形左上角的坐标,(x2,y2)为矩形右下角的坐标。

若,则为正方形。

4)绘制多边形

同类推荐
  • 数字博物馆研究与实践:2009

    数字博物馆研究与实践:2009

    本书汇集了“2009年北京数字博物馆研讨会”与会代表提交的60余篇论文和演讲报告、应用案例,分为数字博物馆(科技馆)发展研究探讨、数字博物馆(科技馆)多样性发展模式、数字技术在博物馆(科技馆)展陈中的应用、数字博物馆(科技馆)建设实践、数字博物馆(科技馆)实现技术和数字博物馆调研报告等六个部分。本书内容囊括了对数字博物馆(科技馆)建设宏观层面的全局思考以及微观层面的具体实践。在宏观层面,介绍了数字博物馆(科技馆)在国内外的发展现状与趋势,通过剖析典型案例,探讨数字博物馆(科技馆)建设的意义、目标、作用、建设原则、要素、特征及目前建设工作中存在的现实问题与对策。
  • 中文版AutoCAD2005辅助设计宝典

    中文版AutoCAD2005辅助设计宝典

    本书全面、详细地介绍了中文版AutoCAD2005的特点、功能以及使用方法和技巧。全书共分11章,前九章分别介绍了利用中文版AutoCAD2005进行辅助设计的方法和技巧,最后两章讲解了若干综合实例。
  • 计算机网络技术与应用

    计算机网络技术与应用

    本书共8章,系统地介绍了计算机网络的发展和基本原理体系结构、局域网、广域网、网络服务、网络安全、典型网络的结构特点等内容。除第8章外,其他各章都附有练习题。为了加强学习效果,本书围绕知识点的典型性,精选了6个实验。此外,在本书的第8章,我们综合各章知识设计了“办公局域网组建设计”和“中小型企业局域网组建设计”这两个常用的计算机网络技术应用实例,供学生学习和参考。本教材适合作为本科非计算机专业学生的计算机网络教材。
  • 中国移动智能手机的秘密

    中国移动智能手机的秘密

    《中国移动智能手机的秘密》是一本关于移动终端和移动互联网的科普书。作者将这18年通信行业中的学习、思考、实践积累成《中国移动智能手机的秘密》与大家分享。书本系统总结了手机的发展历史、TD产业界“从2G向3G演进”的移动终端产业分化重组进程、智能手机的使用方法用方法和应用指南,以及对移动互联网发展独特思考。
  • 云计算和现代远程教育

    云计算和现代远程教育

    本书介绍了云计算知识、云计算的特性、云计算技术、云计算中的访问云、云计算中的云存储、云计算在远程教育中的应用等内容。
热门推荐
  • 总裁不禁欲之娇妻宠上天

    总裁不禁欲之娇妻宠上天

    老公,你别乱来啊!我受不住!”“嗯。宝贝,不乱来,我们从头来。”“嗯?不要!”“那我们从下身来。”她顿时无语。。。“好!就从下身来!”斯!“啊!痛!”……冰山总裁遇到失散多年的玩伴,一夺吻二夺身三夺心,但至少他可以给自己护短。好吧!她也只好从了......
  • 层层深陷

    层层深陷

    13年前的命案让他们的命运发生了改变,职场小白寒风初入职场发现boss川衡身后竟然隐藏着不能说的秘密,被富豪收养的被害人遗孤凌骁,在为父报仇的欲念下慢慢走上了不归路,从知道那件秘密开始,没人可以全身而退
  • 九唳

    九唳

    一场乱斗,毁灭了墨璃的幸福生活,原本生活在象牙塔里的公主开始寻找父母死亡的真相,却揭开了更大的身世之谜。在成长的路上,爱过,恨过,也痛过,即使命运从来不曾眷顾,但也要活出自己的风采!女主,成长型,从一个娇俏可爱的软萌妹子成长为六界为之颤抖的魔君!男主,守护型,即使这世界对你不友好,至少还有我陪你一直到老!
  • 笑傲江湖之书剑江湖

    笑傲江湖之书剑江湖

    莫听穿林打叶声,何妨吟啸且徐行。竹杖芒鞋轻胜马,谁怕?一蓑烟雨任平生。
  • 末世之狼魂

    末世之狼魂

    当末世来临,你该怎么办?(新人首作,真的,我也觉得自己很差劲,请各位大神给点好的建议,我会努力写好的。)
  • 天行

    天行

    号称“北辰骑神”的天才玩家以自创的“牧马冲锋流”战术击败了国服第一弓手北冥雪,被誉为天纵战榜第一骑士的他,却受到小人排挤,最终离开了效力已久的银狐俱乐部。是沉沦,还是再次崛起?恰逢其时,月恒集团第四款游戏“天行”正式上线,虚拟世界再起风云!
  • 校花的十八岁保镖

    校花的十八岁保镖

    迷一样的少年,神一样的手段。他奉命下山寻找那素未谋面的未婚妻,却巧然成为未婚妻妹妹的贴身保镖……老头说“醉红颜,掌王权!”老头还说“低调做人,高调做事,深藏巧与名!”于是呼,一个妖孽般的少年就此诞生…
  • 灵武星域

    灵武星域

    痴迷于武道的男主天赋实力早已远超越他人却遭到他人忌惮被围杀,男主复活后看看如何重回巅峰
  • 我无敌了但我太无聊了

    我无敌了但我太无聊了

    神秘人:我这里有一个好消息和一个坏消息,你想先听那个?猪脚:反正都要说,先说好的让我高兴一下。神秘人:好消息就是,你有o世界加持,你无敌了!猪脚:太好了我无敌了,噢耶,好了我高兴完了,你继续说。神秘人:咳咳,那我说了,坏消息就是,你现在在a世界猪脚:……你想不想吃东西神秘人:什么东西?猪脚:你爱吃的大嘴巴子!
  • 百花杀尽

    百花杀尽

    霸道帅气的小富二代池先,清秀俊雅的小男生沈斯南,漂亮优雅的美人林曦音,还有各色各样真真假假的朋友,各种恋爱和友情。信任与背叛、分离与重逢、现实与幻想……又沉重又轻松。这是我们的青春故事。