登陆注册
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的媒体播放器。

同类推荐
  • 互联网创业前奏曲(第二部)——网站运营之人性、策略与实战

    互联网创业前奏曲(第二部)——网站运营之人性、策略与实战

    本书是《互联网创业前奏曲》系列的第二本书,是作者多年互联网实践经验和业界观察的总结,是国内罕有的关于互联网网站运营和用户心理结合的书籍,用通俗的语言阐述互联网运营背后的人性驱动。你想互联网创业吗?你是否在为找不到好的互联网运营策略和方法而发愁?你非常想了解互联网行业?你是否在为自己不了解互联网运营而苦恼?本书针对这些问题列举了很多互联网运营的案例,帮你制定运营策略,更好的修炼和提升运营功力。
  • 体感交互技术

    体感交互技术

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

    中国3D打印的未来

    自2012年以来,有关3D打印的报道屡见报端,这一新型制造技术引起了全世界的广泛关注。《中国3D打印的未来》作者、中国3D打印技术产业联盟秘书长罗军认为,中国从20世纪90年代初开始涉足3D打印技术,并取得了巨大进展,但与国外同行相比仍存在一定差距。特别是中国3D打印企业普遍存在“小而散”、各自为政的现象,如何发挥整合优势、抱团发展是目前亟需解决的问题。如果能够加强同行合作,抱团发展,形成合力,相信3D打印会成为唯一一项中国有可能赶超世界先进水平的技术。
  • 信息技术教育大全-操作系统大全

    信息技术教育大全-操作系统大全

    本书系统介绍说明了有关电子信息系统及操作系统等知识,希望对该信息技术有需求的读者能够从中得到帮助。
  • 信息技术教育大全-计算机网络

    信息技术教育大全-计算机网络

    信息技术教育大全-计算机网络信息技术教育大全-计算机网络信息技术教育大全-计算机网络信息技术教育大全-计算机网络信息技术教育大全-计算机网络信息技术教育大全-计算机网络信息技术教育大全-计算机网络
热门推荐
  • 清风知几许

    清风知几许

    我想用我的余生为你暖一盏茶,微风起时匆忘归家。
  • 灵尊大圣

    灵尊大圣

    菩提老祖的师弟孙悟饭究竟为何会流落在山野荒村?悟空能否拯救爷爷?修道、修仙、修魔?路该怎么选?世界如此之乱,谁才是一主沉浮的人?
  • 怦然心动:冷少宠妻99天

    怦然心动:冷少宠妻99天

    她不知生死躺在医院,她的未婚夫却在潇洒出轨。在她困苦尴尬的时候,还冤家路窄,碰到昔日恋人。她丢尽脸面,还被他嘲笑束缚。拖到地下停车场,威逼她承认错误。她最大的错误,就是吃了他,还逃跑。“医院男神!男神个屁!根本就是不讲理的土流氓,每次遇到你都倒霉。”多年后,萌宝问妈咪,“妈咪,你是怎么把爸比追上的。”妈咪,“你爸比是买一送一,送上门来的。”
  • 为妾之道

    为妾之道

    为妾之道在于妾上无妻。总而言之:这是一个披着“狐狸精”皮的小美人成功勾搭上一位古板守礼老男人,从而实现了“宠妾灭妻”这一伟大战术目标的小故事。
  • 末法时代之灵

    末法时代之灵

    她沉睡了亿万年,不明缘由的出生。没想到接下来遇到的却是末法的时代,一个新的世界,即将到来…
  • 邪傲九天

    邪傲九天

    华夏武神穿越异世。逍遥派末代掌门化身豪门纨绔大少。踏凌波微步异世纵横。挥六脉神剑武动乾坤。戏北冥,笑风辰,左太极,右降龙。诗词歌赋数风流。文第一,武无双。看叶逍如何一步步成为九界巅峰!
  • 碎了你的天道又如何

    碎了你的天道又如何

    我欲捅破这个天,世人却在另一边!少年全村被屠,意外觉醒道冢之力,神秘人出现,却只教修心不修行,道冢之力现世,各方势力争相追逐,他怒踏九重天,矢志走出属于自己的道......
  • 废材逆天:魔后太腹黑

    废材逆天:魔后太腹黑

    她,一代死灵殿殿下——冷凤。一朝陨落,穿越成了一个废材——沈泠凤。废材?那是什么?本姑娘只知道魔武双修。圣兽?不好意思,本姑娘只有神兽。君凌天?这个自恋到姥姥家的男人。每一次看到他……气得咬牙,想踹飞他。可是……修为总差那么多。怎么办?男人,给本姑娘等着,待我比你强大,第一件要做的事,就是一脚将之踹飞。凌霄之上,他许她千年等待,换来此世的异世回归,到底是回归还是注定?当腹黑对上腹黑,强者对上强者究竟谁才是王?
  • 天行

    天行

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

    斗罗大陆之究极魔法师

    斗罗大陆这是一个拥有魂环的巨大世界。名为未知的兴奋、光辉显赫的荣耀,以及与可爱女孩的罗曼史。 家里蹲北辰穿越至斗罗大陆。虽然他不想成为一个绝世强者,但是为了回到地球他不得不这样做。而且在斗罗大陆陷入各种麻烦的他,遇到各式各样的阴谋──!?为了生存而不断变强,为了所爱之人而战,为了回到地球而努力着。北辰的异世界奇幻故事,如今正式揭开序幕