登陆注册
36209800000026

第26章 多媒体编程(2)

绘制多边形,用Canvas对象的Polygon方法,语句格式为:

Canvas.Polygon(Point(x1,y1),Point(x2,y2),…,Point(x,y));其中(x1,y1),(x2,y2),…,(x,y)分别为多边形的各个顶点的坐标。

5)绘制椭圆

绘制椭圆,用Canvas对象的Ellipse方法,语句格式为:

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

若,则为圆。

6)绘制圆角矩形

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

Canvas.RoundRec(x1,y1,x2,y2,r1,r2);其中(x1,y1)为圆角矩形的外切矩形左上角的坐标,(x2,y2)为圆角矩形的外切矩形右下角的坐标,r1、r2为圆角的长、短半径。

7)绘制弓形

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

Canvas.Chord(x1,y1,x2,y2,x3,y3,x4,y4);其中x1、y1、x2、y2确定一个椭圆,被一条从(x3,y3)到(x4,y4)的直线分开,得到一段从(x3,y3)开始逆时针到(x4,y4)的椭圆弧,同(x4,y4)到(x3,y3)的直线围成的弓形。

8)绘制扇形

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

Canvas.Pie(x1,y1,x2,y2,x3,y3,x4,y4);其中x1、y1、x2、y2确定一个椭圆,从中截取圆心到(x3,y3)逆时针至圆心到(x4,y4)的部分。

9)绘制文本

绘制文本,用Canvas对象的TextOut方法,语句格式为:

Canvas.TextOut(x,y,constText);其中x,y决定文本的位置,constText为绘制的文本字符串。

如Form1.Canvas.TextOut(100,150,欢迎使用Delphi编程工具!)在(100,150)坐标处绘制文本“欢迎使用Delphi编程工具!”。

11.2.4用Image组件绘制位图

如上所述,利用Canvas对象可以在窗体或PaintBox组件上绘图。但要绘制位图,还得使用Image组件。

使用Image组件绘图,也是利用它的Canvas对象,通过设置Canvas的属性,调用Canvas的方法来实现。

11.3Delphi中简单的声音操作

声音是重要的多媒体元素之一。Delphi提供了很强的声音操作的功能,这主要由后面要介绍的MediaPlayer组件实现,本节只先介绍Delphi的简单声音操作功能。

11.3.1使用MessageBeep函数发声在Windows操作中,可以通过声音向用户进行必要的提示。在Delphi中,可以调用Windows的API函数MessageBeep,使计算机发出Windows的系统声音。函数的调用格式为:

MessageBeep(UType);其中UType指定函数发出声音的类型,其取值及对应的声音如表11-8所示。

MessageBeep函数只能发出Windows的系统声音,要随意播放WAV声音文件,可以使用SndPlaySound函数。该函数也是Windows的API函数,它的调用格式为:

SndPlaySound(声音文件名,SndAsync);

其第一个参数,给出WAV声音文件的全路径名;第二个参数,固定的SndAsync;若要停止声音文件的播放,第一个参数用nil,第二个参数用0。

要使用这个函数播放声音文件,还要在单元文件的头部uses中加入调用Windows多媒体函数动态链接库mmsystem。

由此,可以设计一个简单的WAV声音文件播放器,设置3个按钮。

单击第一个按钮,打开一个“打开文件对话框”,选择要播放的声音文件,代码段为:

procedureTForm1.Button1Click(Sender:TObject);11.4MediaPlayer组件

MediaPlayer组件是Delphi中功能强大、使用方便的多媒体组件,可以播放MP3、WAV、CD等音乐文件,播放AVI、DAT等视频文件,使用它可以很容易地开发多媒体应用程序。

MediaPlayer组件位于组件模板的System选项卡上,其图标为,放置在窗体上外观为一组可以定制的播放控制按钮,如图11-9所示。

11.4.1MediaPlayer组件的属性

1.AutoEnable和EnabledButton属性

AutoEnable属性决定在程序运行时,MediaPlayer组件是否能自动控制其按钮哪些可用、哪些不可用。如没有打开文件时,所有按钮都不可用;播放时,Play按钮就不可用等。该属性为布尔型属性,若属性值为True,则自动控制;否则,不能自动控制,这时按钮是否可用由EnabledButton属性来控制。其默认值为True。

如上所说,当AutoEnable属性为False时,MediaPlayer组件各个按钮是否可用由EnabledButton属性决定。该属性为集合型属性,包含9个布尔型子属性,每个子属性对应组件的一个按钮,当某个子属性的值为True时,则它对应的按钮可用,否则不可用。9个子属性的默认值都为True。

2.ColoredButtons属性

ColoredButtons属性决定MediaPlayer组件各个按钮是彩色的还是黑色的。该属性为集合型属性,包含9个布尔型子属性,每个子属性对应组件的一个按钮,当某个子属性的值为True时,则它对应的按钮为彩色,否则为黑色。9个子属性的默认值都为True。

3.VisibleButtons属性

VisibleButtons属性决定MediaPlayer组件各个按钮是否可见。该属性为集合型属性,包含9个布尔型子属性,每个子属性对应组件的一个按钮,当某个子属性的值为True时,则它对应的按钮可见,否则不可见。9个子属性的默认值都为True。

4.AutoOpen属性

AutoOpen属性决定在程序运行时,MediaPlayer组件是否自动打开由DeviceType属性指定的多媒体设备。该属性为布尔型属性,若属性值为True,则组件自动打开多媒体设备;若为False,组件要通过调用Open方法才能打开设备。其默认值为True。

5.AutoRewind属性

AutoRewind属性决定MediaPlayer组件是否可以自动返回并重新开始播放媒体文件。该属性为布尔型属性,若属性值为True,可自动返回。其默认值为True。

6.DeviceType属性和DeviceID属性

DeviceType属性指定MediaPlayer组件用Open方法打开的多媒体设备的类型。该属性为枚举型属性,有13种取值,其取值和含义如表11-9所示。

DeviceID属性为只读属性,返回当前打开设备的识别号。若无打开设备,则该属性值为0。

7.FileName属性

FileName属性指定MediaPlayer组件要播放的媒体文件名。

8.Display属性和DisplayRect属性

Display属性用于指定一个窗口类对象作为媒体文件的播放输出界面,其默认值为Nil,表示组件自己打开一个窗口输出媒体文件。

DisplayRect属性用于在Display属性指定的窗口中设置一个矩形区域,作为媒体文件的输出范围。

9.StartPos属性、EndPos属性和Position属性

StartPos属性用于设置MediaPlayer组件当前要播放的媒体文件的起始位置。

EndPos属性用于设置MediaPlayer组件当前要播放的媒体文件的终止位置。

MediaPlayer组件只能播放这个区间的内容。

而Position属性用于设置媒体文件的当前位置。

10.Length属性

Length属性返回媒体文件的长度。

11.TimeFormat属性

StartPos属性、EndPos属性、Position属性和Length属性都是用时间表示的,而时间的格式由TimeFormat属性来指定。该属性为枚举型属性,有tfMillisecond、stfHMS、tfMSF、tfFrames、tfSMPTE24、tfSMPTE25、tfSMPTE30、tfSMPTE30Drop、tfBytes、tfSamples、tfTMSF等11种取值。

12.Frames属性

Frames属性用于设置播放中单步前进或后退时跳过的帧数,通常用占媒体文件总帧数的百分比来表示。其默认值为10%。

13.Capabilities属性

Capabilities属性是只读的集合型属性,用于返回当前设备可以进行的操作,其值可以是:

MpCanEject--可以弹出;

mpCanPlay--可以播放;

mpCanRecord--可以录音;

mpCanStep--可以单步前进或后退;

mpUsesWindows--可以用窗口显示输出。

14.Mode属性

Mode属性是只读属性,用于返回设备当前的状态,其值可以是:

mpNotReady--设备未准备好;

mpStopped--停止状态;

mpPlaying--播放状态;

mpRecording--录音状态;

mpSeeking--搜索状态;

mpPaused--暂停状态;

mpOpen--设备已打开。

11.4.2MediaPlayer组件的方法

1.Open方法

Open方法用于打开媒体设备。在播放媒体文件前,必须先打开媒体设备。

2.Play、Pause、Stop、Next、Previous、Step、Back、StartRecording和Eject方法这几个方法实现的功能与MediaPlayer组件按钮的功能是一一对应的。实际上,按下组件的按钮,也是调用相应的方法。

3.Resume方法

Resume方法使媒体设备从暂停状态转到继续播放或录制状态。

4.PauseOnly方法

PauseOnly方法使媒体设备从播放或录制状态转到暂停状态。

5.Rewind方法

Rewind方法使播放的媒体文件回到指定的起始位置。

6.Close方法

Close方法用于关闭已打开的媒体设备。

11.4.3MediaPlayer组件使用举例例11-4用MediaPlayer组件设计一个简单的媒体播放器。

设计好的窗体如图11-10所示。

(1)组件及其属性设置

由图11-10可见,窗体中有一个MediaPlayer组件MediaPlayer1,一个指示播放进度的TrackBar1组件,一个打开文件对话框组件OpenDialog1,一个用于定时的Timer1组件,两个分别用于装入媒体文件和打开媒体设备的按钮Button1、Button2,3个Panel组件:DisplayPanel用于媒体文件播放输出,OuterPanel用于放置DisplayPanel,ButtonPanel用于放置按钮等组件,这些组件的属性设置如表11-10所示。

(2)选择事件,编写事件处理代码。

对窗体Form1,选择OnCreate事件,为MediaPlayer组件指定Display属性,事件处理代码段为:

对按钮Button1,选择OnClick事件,打开OpenDialog1组件,选择装入媒体文件,事件处理代码段为:

对按钮Button2,选择OnClick事件,为MediaPlayer1指定播放的媒体文件,打开媒体设备,事件处理代码段为:

对DisplayPanel,选择OnResize事件,改变DisplayPanel大小时,调整MediaPlayer1显示区的大小,事件处理代码为:

对定时器Timer1,选择OnTimer事件,控制TrackBar1随播放进行而变化,事件处理代码为:

对TrackBar1组件,选择OnChange事件,TrackBar1移动时,MediaPlayer1的Position属性随之改变,事件处理代码为:

(3)保存文件,编译、运行程序,播放媒体文件效果如图11-11所示。

习题11

1.用Image组件显示图像文件时,如何实现图像的缩放?

2.Delphi的Shape组件和Canvas对象各有什么功能?使用这两个对象绘图时,要进行哪些属性设置?

3.设计一个完整的带3个控制按钮的音乐文件播放器。

4.自己动手实现例11-4的媒体播放器。

同类推荐
  • 体感交互技术

    体感交互技术

    本书提出了体感计算的研究,探讨了基于体验性认知的个性化电子学习方式,并且分析了面向儿童的艺术创造体验,在体感虚拟化身的帮助下,用户可以通过身体运动,促进情感心智的全面发展,
  • 创业在微软

    创业在微软

    身处软件巨擘微软之中,何来“创业”二字?本书详尽勾勒了微软亚洲工程院(ATC)的成长历程,披露了工程院人在“创业”过程中不为人知的种种酸甜苦辣,生动展现了工程院的独特文化,并从另一个角度展现了其领袖人物张宏江博士的心路历程和管理思想。
  • 领导干部信息化基础

    领导干部信息化基础

    本书共分6章,分别介绍了计算机网络综述;信息化的三个主要领域,即电子政务(政府信息化)、企业信息化和电子商务;PowerPoint2000中文演示文稿等内容。
  • 不懂PowerPoint就当不好经理

    不懂PowerPoint就当不好经理

    经理人如何用PowerPoint,来规划部门的发展,如何用PowerPoint来表达自己的经营主张?本书为各类经理人提供了从入门到提高,从原理到实战的一系列知识,相信本书将让演示文稿为经理人的管理效能加分!
  • 玩转手机

    玩转手机

    本书主要包括:手机的发展历史、手机知识、手机的选购与巧用、手机与网络、手机短信等内容。
热门推荐
  • 天医女凰

    天医女凰

    次日,某女懒懒的躺在某男的怀里,舔了舔干涩的唇角,微微一勾,声音撩人的不像话:“爷,我饿了。”咱爷无视了某女眸中的颜色,手执一块梅花糕,塞进她的嘴里。某女坏坏一笑,一个翻身,嘴里囫囵不清:“爷,不吃这个,我想…吃你。”
  • 逆着光追寻

    逆着光追寻

    “候鸟南飞万河归海我为你而来温琦你愿意和我在一起吗?”10月3号那是他们第一次见面的日子他永远忘不了那一天温琦一袭白衣向他伸出纤纤玉手,示意他跟着她。他想不明白,这么漂亮的少女怎么会涨他这样不堪的人伸出手,后来,他明白了,温绮就他妈的是色!!!他们经历了太多从雨夜到S13大厅再到赌场即使万劫不复纵然相思入骨他也待她眉眼如初岁月如故【PS:逻辑党勿入,玛丽苏,一切为了女主而服务,亲妈!!!】
  • 腹黑总裁不敢惹:落跑娇妻

    腹黑总裁不敢惹:落跑娇妻

    他是T城房地产巨头的掌舵人,外表优雅冷漠风度翩翩,在她面前却是口嫌体正直的傲娇届翘楚。她是小小的咖啡店服务员,瘦小娇弱貌美如一朵小白花,在他面前却是倔强顽固不撞南墙不回头的倔脾气。“白可言,女人需要的不就是男人,房子,车子,票子嘛,我全部都给你了,你到底还有什么不满足?”“陆承朗,你每天这么衣冠楚楚的样子,别人知道你是个衣冠禽兽嘛?真是让我恶心的想吐……!”“白可言,你敢这么叫我,我让你亲身感受这四个字的真正含义怎么样?……”
  • 无神之神的兴衰

    无神之神的兴衰

    在神魔仙等族的并立的背景下……洪荒的深处,一对年轻的小夫妻发现了一个孤儿。而故事便是从这个孩子开始……
  • 天行

    天行

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

    西口在望

    山西是华夏文明的主要发祥池之一。表里山河的独特自然条件,勤劳智慧的历代先民,造就了得夭独厚的三晋人文资源,被誉为华夏文明的“主题公园”,中国社会变革和进步的“思想库”,古代东方艺术的“博物馆”。
  • 放不下的是我爱你

    放不下的是我爱你

    二月兰代表的爱情,是朴素和长久,结果却变成了抹不去的伤痕,残缺的画是要追回不堪的过往,结果成了爱的见证和情的跌宕,选择抛弃,是受到蛊惑的错;选择记忆,是受到谴责的伤……选择离开,是因为真爱;选择坚守,是因为真爱……泪,是苦的;心,是热的……放不下执著,是因为刻骨铭心的爱……老公,别换我!我爱你,放下你一生将是爱情成殇,追随你一生让爱情飞扬……惊人秘密,是谁隐藏?重重迷雾,又有谁拨开?别错过,会告诉你真相……
  • 超级新闻人

    超级新闻人

    寒门出身的新闻系学生严宽,一次意外,让他拥有了开启新闻界的金钥匙;正所谓一入新闻深似海,从此节操成路人!又所谓“你撬我墙角,我挖你祖坟”!明星,土豪,大叔,大佬,统统都到碗里来,让哥好好地治治你们!
  • 诸天之从诛仙开始

    诸天之从诛仙开始

    有一位少女为爱死在了诛仙剑下;有一个老头为了将永夜驱逐化为了明月;少女跳入铸剑池祭了剑;女孩儿等待万古却成了空;石猴战天斗地最终成为了最不想成为的灵山脚下一尊佛…………慢穿诸天流,世界《诛仙》、《将夜》、《仙剑奇侠传三》、《遮天》、《西游记》。……目前遮天进行中,书友群724833113……可跳过第一个世界去看下一个世界,并不影响阅读体验
  • 取酒

    取酒

    不见天地,不见仙凡。取一壶酒,万千罪空。欢迎加入《取酒》书友群(1061574940)