《《Delphi程序设计及实验指导》电子教案--第11章.ppt》由会员分享,可在线阅读,更多相关《《Delphi程序设计及实验指导》电子教案--第11章.ppt(31页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、第十一章第十一章 多媒体编程多媒体编程 11.1 动画组件TAnimate11.2 简单的动画播放程序的设计11.3 简单的CD播放器的制作习 题11.1 动画组件TAnimate1用途 DelphiDelphi提供了一个提供了一个TMediaPlayerTMediaPlayer组件,使得程序员可组件,使得程序员可以使用它快速开发音频或者视频播放器。以使用它快速开发音频或者视频播放器。TMediaPlayerTMediaPlayer组件提供了一个组件提供了一个MCIMCI(Media Control Media Control InterfaceInterface,媒体控制界面),它可以轻松地
2、在程序中,媒体控制界面),它可以轻松地在程序中加入多媒体功能。完整的加入多媒体功能。完整的MCIMCI驱动程序能够支持驱动程序能够支持*.wav.wav、*.datdat、*.midi.midi和和*.cdacda等格式的文件。等格式的文件。11.1 动画组件TAnimate2主要属性(1)Active(1)Active属性属性(2)Center(2)Center属性属性(3)(3)FileNameFileName属性属性 (4)(4)FrameCountFrameCount属性属性 (5)(5)FrameHeightFrameHeight和和 FrameWidthFrameWidth属性属性
3、 (6)Open(6)Open属性属性 (7)Repetitions(7)Repetitions属性属性 (8)(8)StartFrameStartFrame属性和属性和StopFrameStopFrame属性属性 (9)Timers(9)Timers属性属性 11.1 动画组件TAnimate注意:注意:在使用在使用PlayPlay方法时应用注意以下几点:方法时应用注意以下几点:FromFrameFromFrame的值应该小于或等于的值应该小于或等于ToFrameToFrame的值。的值。CountCount参数值为参数值为0 0的时候代表持续播放,直到使用的时候代表持续播放,直到使用Sto
4、pStop方法时停止。方法时停止。StartFrameStartFrame和和StopFrameStopFrame的值将在使用的值将在使用PlayPlay方法时被方法时被FromFrameFromFrame和和ToFrameToFrame的值覆盖。的值覆盖。11.1 动画组件TAnimate【例例11-111-1】使用使用TanimateTanimate组件设计一个简单的动组件设计一个简单的动画播放程序。画播放程序。11.1 动画组件TAnimate11.1.2 11.1.2 媒体播放器组件媒体播放器组件TMediaPlayerTMediaPlayer 1 1用途用途 DelphiDelphi
5、提提供供了了一一个个TMediaPlayerTMediaPlayer组组件件,使使得得程程序序员员可可以以使使用用它它快快速速开开发发音音频频或或者者视视频频播播放放器器。TMediaPlayerTMediaPlayer组组件件提提供供了了一一个个MCIMCI(Media Media Control Control InterfaceInterface,媒媒体体控控制制界界面面),它它可可以以轻轻松松地地在在程程序序中中加加入入多多媒媒体体功功能能。完完整整的的MCIMCI驱驱动动程程序序能能够够支支持持*.wav.wav、*.datdat、*.midi.midi和和*.cdacda等格式的文
6、件。等格式的文件。11.1 动画组件TAnimate2主要属性 (1)(1)AutoEnableAutoEnable属性属性 (2)(2)EnabledButtonsEnabledButtons属性属性 (3)AutoOpen(3)AutoOpen属性属性 (4)(4)AutoRewindAutoRewind属性属性 (5)(5)ColoredButtonColoredButton属性属性 (6)(6)DeviceTypeDeviceType属性属性 (7)Display(7)Display属性属性 (8)(8)DisplayRectDisplayRect属性属性(9)Mode(9)Mode属
7、性属性 (10)(10)FileNameFileName属性属性 (11)(11)StartPosStartPos属性属性 (12)(12)EndPosEndPos属性属性 (13)Position(13)Position属性属性 (14)Length(14)Length属性属性 11.1 动画组件TAnimate【例例11-211-2】使用使用TMediaPlayerTMediaPlayer组件编写一个简组件编写一个简单的单的AVIAVI文件播放器程序。文件播放器程序。11.2 简单的动画播放程序的设计 为了更好地理解为了更好地理解TAnimateTAnimate组件的属性、方法和事件,这一
8、节创建组件的属性、方法和事件,这一节创建一个简单的动画播放程序。通过实例一个简单的动画播放程序。通过实例3 3,更好地掌握,更好地掌握TAnimateTAnimate组组件的应用以及多媒体程序的设计思路。件的应用以及多媒体程序的设计思路。11.2 简单的动画播放程序的设计11.2.1 界面设计 新新建建一一个个工工程程PrjTAnimate.dprPrjTAnimate.dpr,按按图图11-611-6设设计计动动画画播播放放程程序序的的界界面面。窗窗体体及及其其组组件件属属性性的的设设置置值值如如表表11-211-2所示。所示。11.2 简单的动画播放程序的设计图图11-611-6设计动画播
9、放程序的界面设计动画播放程序的界面11.2 简单的动画播放程序的设计11.2.2 代码编写 1 1定义存放起始帧、结束帧、循环次数和总帧数定义存放起始帧、结束帧、循环次数和总帧数 varvar Form1:TForm1;Form1:TForm1;StartFrame,StopFrame,RepeatFrame,SumFrame:integerStartFrame,StopFrame,RepeatFrame,SumFrame:integer;11.2 简单的动画播放程序的设计 2 2TAnimate1TAnimate1组件的组件的OnOpenOnOpen事件处理程序代码事件处理程序代码 proc
10、edure TForm1.Animate1Open(Sender:procedure TForm1.Animate1Open(Sender:TObjectTObject););beginbegin ShowMessage(TAnimaetShowMessage(TAnimaet组件触发组件触发OnOpenOnOpen事件,初始化事件,初始化变量变量!);!);(*(*初始化变量初始化变量*)StartFrameStartFrame:=Animate1.StartFrame;:=Animate1.StartFrame;StopFrameStopFrame:=Animate1.StopFrame;
11、:=Animate1.StopFrame;RepeatFrameRepeatFrame:=Animate1.Repetitions;:=Animate1.Repetitions;SumFrameSumFrame:=Animate1.FrameCount;:=Animate1.FrameCount;Estartframe.TextEstartframe.Text:=:=IntToStr(StartFrameIntToStr(StartFrame););Estopframe.TextEstopframe.Text:=:=IntToStr(StopFrameIntToStr(StopFrame);)
12、;Esumframe.TextEsumframe.Text:=:=IntToStr(SumFrameIntToStr(SumFrame););Erepeatframe.TextErepeatframe.Text:=:=IntToStr(RepeatFrameIntToStr(RepeatFrame););end;end;11.2 简单的动画播放程序的设计 3 3“开始播放开始播放”按钮的按钮的OnClickOnClick事件处理程序代码事件处理程序代码 procedure TForm1.playClick(Sender:procedure TForm1.playClick(Sender:TOb
13、jectTObject););beginbegin StartFrameStartFrame:=:=StrToInt(Estartframe.textStrToInt(Estartframe.text););StopFrameStopFrame:=:=StrToInt(Estopframe.textStrToInt(Estopframe.text););RepeatFrameRepeatFrame:=:=StrToInt(Erepeatframe.textStrToInt(Erepeatframe.text););(*(*验证动画属性设置编辑框的数据合法性验证动画属性设置编辑框的数据合法性*)
14、if(if(StartFrameStartFrame StopFrameStopFrame)or(StopFrameor(StopFrame SumFrameSumFrame)thenthen 11.2 简单的动画播放程序的设计 begin /begin /输入范围错误输入范围错误 ShowMessageShowMessage(输入帧的范围错误,所有设置复位!输入帧的范围错误,所有设置复位!););Animate1.StartFrame:=1;Animate1.StartFrame:=1;Animate1.StopFrame:=Animate1.FrameCount;Animate1.Stop
15、Frame:=Animate1.FrameCount;Animate1.Repetitions:=0;Animate1.Repetitions:=0;Estartframe.TextEstartframe.Text:=1;:=1;Estopframe.TextEstopframe.Text:=IntToStr(Animate1.FrameCount);:=IntToStr(Animate1.FrameCount);Erepeatframe.TextErepeatframe.Text:=0;:=0;end end elseelse 11.2 简单的动画播放程序的设计 beginbegin (*设
16、置组件的设置组件的EnabledEnabled属性属性*)play.Enabledplay.Enabled:=False;:=False;stop.Enabledstop.Enabled:=True;:=True;Estartframe.EnabledEstartframe.Enabled:=False;:=False;Estopframe.EnabledEstopframe.Enabled:=False;:=False;Erepeatframe.EnabledErepeatframe.Enabled:=False;:=False;(*设置设置TAnimateTAnimate组件的属性,然后进
17、行播放组件的属性,然后进行播放*)Animate1.StartFrame:=Animate1.StartFrame:=StartFrameStartFrame;Animate1.StopFrame:=Animate1.StopFrame:=StopFrameStopFrame;Animate1.Repetitions:=Animate1.Repetitions:=RepeatFrameRepeatFrame;Animate1.Active:=True;/Animate1.Active:=True;/进入播放状态进入播放状态 end;end;end;end;11.2 简单的动画播放程序的设计4
18、4“停止播放停止播放”按钮的按钮的OnClickOnClick事件的处理程事件的处理程序代码序代码procedure TForm1.stopClick(Sender:procedure TForm1.stopClick(Sender:TObjectTObject););beginbegin(*(*停止播放停止播放*)Animate1.Stop;Animate1.Stop;play.Enabledplay.Enabled:=True;/“:=True;/“开始播放开始播放”按钮可用按钮可用stop.Enabledstop.Enabled:=False;:=False;(*(*设置文本框为可用设置
19、文本框为可用*)Estartframe.EnabledEstartframe.Enabled:=True;:=True;Estopframe.EnabledEstopframe.Enabled:=True;:=True;Erepeatframe.EnabledErepeatframe.Enabled:=True;:=True;end;end;11.2 简单的动画播放程序的设计 运行程序,在运行程序,在EstopframeEstopframe文本框中输入结束帧为文本框中输入结束帧为9 9,单击,单击“开开始播放始播放”按钮,结果如图按钮,结果如图11-711-7所示。所示。11.2 简单的动画播
20、放程序的设计 图图11-7 11-7 运行结果运行结果11.3 简单的简单的CD播放器的制作播放器的制作 11.3.1 界面设计 新建一个工程新建一个工程PrjPcd.dprPrjPcd.dpr,设计如图,设计如图11-811-8所示的所示的CDCD播播放器的界面,窗体及其组件属性的设置值如表放器的界面,窗体及其组件属性的设置值如表11-311-3所所示。示。11.3 简单的简单的CD播放器的制作播放器的制作图图11-8 CD11-8 CD播放器的界面播放器的界面11.3 简单的简单的CD播放器的制作播放器的制作11.3.2 11.3.2 代码编写代码编写 1 1初始化程序初始化程序 proc
21、edure TForm1.FormCreate(Sender:procedure TForm1.FormCreate(Sender:TObjectTObject););beginbegin with MediaPlayer1 do with MediaPlayer1 do begin begin Visible:=True;Visible:=True;DeviceTypeDeviceType:=:=dtCDAudiodtCDAudio;/;/设置多媒体设备的类型设置多媒体设备的类型 Open;/Open;/通过通过OpenOpen方法打开方法打开CDCD播放设备播放设备 end;end;end
22、;end;11.3 简单的简单的CD播放器的制作播放器的制作 2 2按钮的按钮的OnClickOnClick事件处理程序代码事件处理程序代码 procedure TForm1.Button1Click(Sender:procedure TForm1.Button1Click(Sender:TObjectTObject););beginbegin MediaPlayer1.play;/“MediaPlayer1.play;/“播放播放”按钮的按钮的OnClickOnClick事件处理事件处理 end;end;procedure TForm1.Button3Click(Sender:procedu
23、re TForm1.Button3Click(Sender:TObjectTObject););beginbegin MediaPlayer1.Pause;/“MediaPlayer1.Pause;/“暂停暂停”按钮的按钮的OnClickOnClick事件处理事件处理 end;end;11.3 简单的简单的CD播放器的制作播放器的制作 procedure TForm1.Button2Click(Sender:procedure TForm1.Button2Click(Sender:TObjectTObject););beginbegin MediaPlayer1.Stop;MediaPlaye
24、r1.Stop;滞不前滞不前 /“/“停止停止”按钮的按钮的OnClickOnClick事件处理事件处理 end;end;procedure TForm1.Button4Click(Sender:procedure TForm1.Button4Click(Sender:TObjectTObject););beginbegin MediaPlayer1.Previous;/“MediaPlayer1.Previous;/“前一曲前一曲”按钮的按钮的OnClickOnClick事件处理事件处理 end;end;procedure TForm1.Button6Click(Sender:procedu
25、re TForm1.Button6Click(Sender:TObjectTObject););beginbegin MediaPlayer1.Next;/“MediaPlayer1.Next;/“后一曲后一曲”按钮的按钮的OnClickOnClick事件处理事件处理 end;end;procedure TForm1.Button7Click(Sender:procedure TForm1.Button7Click(Sender:TObjectTObject););beginbegin MediaPlayer1.Eject;MediaPlayer1.Eject;勤部勤部 /“/“弹出弹出”按钮
26、的按钮的OnClickOnClick事件处理事件处理 end;end;11.3 简单的简单的CD播放器的制作播放器的制作(*“(*“打开打开”按钮的按钮的OnClickOnClick事件处理事件处理*)procedure TForm1.Button5Click(Sender:procedure TForm1.Button5Click(Sender:TObjectTObject););beginbegin if OpenDialog1.Execute then if OpenDialog1.Execute then begin begin MediaPlayer1.FileName:=OpenD
27、ialog1.FileName;MediaPlayer1.FileName:=OpenDialog1.FileName;MediaPlayer1.Open;MediaPlayer1.Open;end;end;end;end;11.3 简单的简单的CD播放器的制作播放器的制作 3 3Timer1Timer1组件的组件的Timer1TimerTimer1Timer事件处理程序代码事件处理程序代码 窗体中的窗体中的TimerTimer组件的作用是为程序的运行提供事件的组件的作用是为程序的运行提供事件的控制,例如显示控制,例如显示CDCD播放的当前位置、状态等信息。这播放的当前位置、状态等信息。这里利
28、用里利用MemoMemo组件显示相关的信息。组件显示相关的信息。procedure TForm1.Timer1Timer(Sender:procedure TForm1.Timer1Timer(Sender:TObjectTObject););varvar i,j,k:integeri,j,k:integer;pos1,pos2:longint;pos1,pos2:longint;flag:Booleanflag:Boolean;str1:string;str1:string;11.3 简单的简单的CD播放器的制作播放器的制作 beginbegin memo1.lines0:=memo1.li
29、nes0:=总曲目数:总曲目数:+inttostr(MediaPlayer1.Tracks);+inttostr(MediaPlayer1.Tracks);MediaPlayer1.TimeFormat:=MediaPlayer1.TimeFormat:=tfMillisecondstfMilliseconds;pos1:=0;pos1:=0;pos2:=0;pos2:=0;flag:=true;flag:=true;for i:=0 to MediaPlayer1.Tracks-1 do /for i:=0 to MediaPlayer1.Tracks-1 do /显示正在播放的显示正在播放
30、的第几首曲目第几首曲目 beginbegin for j:=0 to i-1 do for j:=0 to i-1 do begin begin pos1:=pos1+MediaPlayer1.TrackLengthj;pos1:=pos1+MediaPlayer1.TrackLengthj;pos2:=pos1;pos2:=pos1;end;end;11.3 简单的简单的CD播放器的制作播放器的制作 pos2:=pos2+MediaPlayer1.TrackLengthi;pos2:=pos2+MediaPlayer1.TrackLengthi;if MediaPlayer1.Positio
31、npos1 then if MediaPlayer1.Positionpos1 then begin begin if MediaPlayer1.Positionpos2 then if MediaPlayer1.Positionpos2 then begin begin memo1.lines1:=memo1.lines1:=正在播放的曲目:第正在播放的曲目:第 +inttostr(i+1)+inttostr(i+1)+首首;flag:=False;flag:=False;end;end;end;end;end;end;11.3 简单的简单的CD播放器的制作播放器的制作 if flag th
32、enif flag then memo1.lines1:=memo1.lines1:=正在播放的曲目:第正在播放的曲目:第 1 1 首首;k:=round(MediaPlayer1.Length/60000);k:=round(MediaPlayer1.Length/60000);memo1.lines2:=memo1.lines2:=曲目长度:曲目长度:+inttostr(kinttostr(k););str1:=str1:=当前状态:当前状态:;(*(*显示显示CDCD播放的当前状态播放的当前状态*)Case MediaPlayer1.Mode of Case MediaPlayer1.M
33、ode of mpNotReadympNotReady:Memo1.Lines3:=str1+:Memo1.Lines3:=str1+准备未绪准备未绪;mpStoppedmpStopped:Memo1.Lines3:=str1+:Memo1.Lines3:=str1+已停止已停止;mpPlayingmpPlaying:Memo1.Lines3:=str1+:Memo1.Lines3:=str1+正在播放正在播放;mpRecordingmpRecording:Memo1.Lines3:=str1+:Memo1.Lines3:=str1+正在记录正在记录;mpSeekingmpSeeking:Me
34、mo1.Lines3:=str1+:Memo1.Lines3:=str1+正在搜索正在搜索;mpPausedmpPaused:Memo1.Lines3:=str1+:Memo1.Lines3:=str1+已暂停已暂停;mpOpenmpOpen:Memo1.Lines3:=str1+:Memo1.Lines3:=str1+打开打开;end;end;end;end;11.3 简单的简单的CD播放器的制作播放器的制作图11-9 运行结果习习 题题 1 1利用利用TAnimateTAnimate组件编写一个简单的动画播放程序。组件编写一个简单的动画播放程序。2 2利用利用TMediaPlayerTMediaPlayer组件制作一个简易的媒体播放器,组件制作一个简易的媒体播放器,具有播放、暂停、停止、播放前一曲、播放后一曲的功具有播放、暂停、停止、播放前一曲、播放后一曲的功能。能。