VS C++实现“照片电影”播放器的软件架构和技术简介
前言:
这个播放器是两年前我大三时上多媒体课的结课大作业,代码部分有瑕疵是肯定的,希望有需要的人能够自己进行代码优化。当时我找了好久都没有用VS C++实现“照片电影”播放器的博客,经过几天的煎熬,我终于想到了如何设置“定时器”来控制照片的播放和暂停后再播放。此博客仅供分享,如需要源代码做参考,请访问我的GitHub账号:https://github.com/Daisy-gj 。
以下内容全部原创,转载请联系我。
1. 软件介绍
本软件是一款简易的“照片电影播放器”–支持前端自选背景音乐(可试听),播放(及多张照片按照一定间隔时间自动逐一显示)后台存储的bmp文件的系统(bmp文件存储在源文件夹中,使用者可以自行用同名bmp文件更换)。相邻照片的出现间隔时间可在后台修改,播放过程中可以暂停播放。
2. 软件设计的背景
本软件的灵感来自于小米手机的相册自带的小软件“照片电影”。
手机上的“照片电影”支持自选照片,音乐,风格,并输出成片保存。但因为我个人水平限制,目前只能做到支持背景音乐选择,后台存储要播放的照片。我尝试过在可视化结果界面上添加选择本机文件的按钮,但是选择文件的面板为Myform与Menu不在同一界面上,无法进行有效关联,所以放弃了。
背景音乐支持试听播放和暂停,我尝试过使用MediaSession和PlaySound,最终选择了PlaySound,因为软件的功能要求对音频不是很高,使用PlaySound完全可以满足要求。
在音乐和图片的播放控制控制方面,我使用了flag(一些bool型的变量)去进行状态判断,从而进行播放、暂停控制。
3. 使用说明
- 界面介绍:运行后生成系统的前端界面,如下图1.0所示。点击帮助按钮后,下拉框中点击使用说明按钮,弹出dialog中有部分说明,示意图2.0如下。
图1.0 系统主界面
- 播放:选定背景乐后,点击播放设置的下拉选择框中的播放按钮,将播放源代码文件中保存的若干张bmp文件,与此同时选定的背景音乐也将同步播放。
-
暂停:点击播放设置的下拉选择框中的暂停按钮,将停止播放照片和音乐,且系统将暂停。
-
选择照片:自选的bmp文件可改为源代码文件夹中的同名bmp文件,对其进行替换,实现自选照片。
-
退出系统:可点击窗口的叉号退出,也可以点击系统管理中的退出按钮进行退出。
4. 软件使用示意视频
我很早就卸载VS了····准备为这个视频重装···但VS更新后要求C盘16G空间·····我装不上。那有需要的去我GitHub下载源码吧,自己跑吧,保证能用!
5. 软件环境及功能结构图
-
软件环境及语言
Microsoft Visual Studio2012
C++ -
功能结构
本软件主要分为两个模块:音频播放,图片播放。
(1)音频播放主要使用的技术:PlaySound
(2)图片播放主要使用的技术:LoadImage、GetDIBits(图片加载)、setTimer(定时器)
下图5.0为整个系统的功能结构图:
6. 软件技术说明
主要写难点部分—图片播放。音乐播放、控制、选择只是简单的在“分析菜单选择”中使用palysound()函数和bool型变量判断。
①图片加载方式选择:
关于图片加载到绘图部分的方式,我尝试了所有实验给出的方法,最终选择了loadimage()。但是loadimage有一个很大的缺陷(我个人在查阅资料后无法解决),就是它无法读取存储路径为char *型的路径的文件(LPCWSTR格式不匹配,转格式后运行程序无法识别代码),所以我将所有的文件加了一个int型的变量做控制逐一进行加载。但是这样做很冗余。我的代码如下:
if(i==0){
hbmp = (HBITMAP)LoadImage(hInstance,L"scenery1.bmp",IMAGE_BITMAP,0,0,LR_LOADFROMFILE); //加载第一幅图像
}
if(i==1){
hbmp = (HBITMAP)LoadImage(hInstance,