图2 播放列表的制作效果
3.3 播放控制的实现
播放控制是一个播放器最重要的功能。由上章可知Microsoft.DirectX. AudioVideo Playback命名空间中定义的属性和方法为这块功能的实现提供了很大的便利,比如播放、暂停、停止函数都有提供。但是在调用这些函数之前还有很多工作需要做。刚启动播放器时播放窗口(整个播放器界面)是固定大小的(见图1),但加载视频以后,播放窗口的大小被设置为和视频的缺省值(MyVideo.DefaultSize)一样。经过DirectX解码后的视频缺省和播放窗口(Owner)的大小并不一样大,有的比播放窗口小,大部分比播放窗口大,甚至比播放窗口大的多,这时需要对视频大小进行调整,按正常比例缩放适应在设置好的播放窗口。化学实验教学的创新与学生能力的培养
在本程序中,当加载视频后,获取视频缺省值的大小(宽和高)和播放窗口的宽度,然后比较并获取视频缺省的宽度和播放窗口宽度中较大的一个(width),大部分情况下是视频的缺省宽度比较大,再把播放窗口的大小初始化为视频缺省高度(height)和width的0.55倍。这个倍率比较合适,使播放屏幕不至太大或太小。见图2、图3。
有了合适的播放屏幕还不完整,因为此时播放屏幕还不能任意调整大小,视频也不一定显示在播放屏幕的中间。下面的mainFormResize事件调用就是解决这个问题的,详见显示控制模块中屏幕调整功能实现。下面这几行代码的作用就是在上面设置好的播放窗口中把视频显示在播放屏幕的中间,并在播放器的顶端显示视频的名称及视频格式。见图2、图3、图4的顶端显示。在播放视频(音频)过程中,我们都期望能看到视频的总长度以及已经播放的长度。本程序中我们是使用movieTimer组件计时的。视频的总长度是死的,我们只需调用Video的属性Duration即可知道视频的总长度,然后把其转换为string格式显示即可。见图2。