多媒体编程课程设计.docx

  • 格式:docx
  • 大小:1.15 MB
  • 文档页数:61

南京工程学院

多媒体编程基础课程

综合作业说明书

题 目 多媒体处理综合应用设计

班 级

学 生 姓 名 刘土豪

学 号 2021003

2013 年 06 月 07 日

一、 程序功能与设计思路

设计目标与具有的功能:

必须含有文字处理、绘图、图像、音频视频四部分内容各3种以上功能,界面及应用方法自己根据软件的特色综合考虑,每位同学必须自己设计一个动画标志,放在【帮助】对话框中,或者窗口界面上

设计思路:

1) 图形处理:

 可以选择直线,矩形,椭圆,涂鸦进行绘画

 可以选择线的形状:实线,虚线,点线

 可以改变线条的颜色

 可以改变线条的宽度

 可以进行多边形填充颜色并可以改变颜色

2) 图片处理:

 可以打开BMP格式的图片

 可以进行锐化,浮雕,反色等图片处理效果

 可以显示鼠标在图片上坐标处的颜色值和颜色

3) 文字处理:

 实现至少少三种文字特效,比如:文字渐变,旋转体,3D,文字倾斜,下划线,空心字等

4) 音乐播放器:

 可以打开mp3,wma,wvi格式的歌曲

 可以控制音乐的播放、暂停、停止

 可以指定播放当前音乐的上一个或下一个音乐

 在列表中随意选择要播放的音乐

 在播放时,可以获取并显示当前播放音乐的信息

 可以调节音乐的音量

5)视频播放器:

 可以打开MP3,WMA,WMV,AVI,RM,RMVB,FLV,MP4等格式  在列表中随意选择要播放的媒体文件

 控制媒体文件的播放、暂停、停止、快进、快退

 指定播放当前文件的上一个或下一个媒体文件

 在播放时,可以获取并显示当前播放媒体的文件信息

 播放模式可以进行进行选择

 可以对播放列表或列表中的选项进行删除操作

二、 相关原理知识介绍

(1) 图形处理:画笔和画刷是绘图中最基本的元素

1.画笔(Pen):用于在设备环境中绘制直线,曲线和多边形边框。

创建画笔:

(1) CPen();

(2) CPen(int nPenStyle, int nWidth, COLORREF crColor);

nPenStyle:画笔的样式PS_SOLID 创建一个实线画笔,PS_DASH 创建一个虚线画笔,PS_DOT 创建一个点线画笔

nWidth:画笔的宽度

crColor:画笔的颜色(颜色用RGB值来描述)

2.画刷(CBrush):常用于填充个区域诸如多边形,椭圆和路径等图形内部区域

创建画刷:

(1) CreateSolidBrush 用指定的颜色初始化画刷

(2) CreateHatchBrush 用指定的阴影线初始化画刷。

(3) CreateBrushIndirect用结构LOGBRUSH中指定的风格、颜色和模式初始化画刷。

3.画直线:LineTo(int x,int y)

画椭圆:Ellipse(int x1,int y1, int x2,int y2)

画矩形:Rectangle(int x1,int y1,int x2,int y2)//x1,y1为边界矩形左上角的坐标,x2,y2为边界矩形右下角的坐标 (2) 图片处理:

BitBlt,用于从源设备中复制位图到目标设备中,

BOOL BitBlt(HDC hdcDest,int nXDest,int nYDest,int nWidth,int nHeight,HDC hdcSrc,int

nXSrc,int nYSrc,DWORD dwRop)

hdcDest:指向目标设备环境的句柄。

nXDest:指定目标矩形区域左上角的X轴逻辑坐标。

nYDest:指定目标矩形区域左上角的Y轴逻辑坐标。

nWidth:指定源和目标矩形区域的逻辑宽度。

nHeight:指定源和目标矩形区域的逻辑高度。

hdcSrc:指向源设备环境的句柄。

nXSrc:指定源矩形区域左上角的X轴逻辑坐标。

nYSrc:指定源矩形区域左上角的Y轴逻辑坐标。

dwRop:指定光栅操作代码。这些代码将定义源矩形区域的颜色数据,如何与目标矩形区域的颜色数据组合以完成最后的颜色。

(3) 文字处理:

输出文字Textout():用当前字体在指定位置处写一个字符串

TextOut(int x,int y,Cstring string):文本起点的x坐标和y坐标以及要绘制的字符串

创建字体LOGFONT{ }结构

(4) 音频播放器:

使用VC++6.0强大的MFC、AppWizard、Class Wizard和其中的多种控件可以很方便地建立各种应用程序。同时想要实现更高级更复杂的功能,也可以借助ActiveX控件资源,用这些现有的控件资源,可以省去自己编程的复杂过程,从而实现更高级的功能。本次课程设计要使用VC++6.0自带的一个ActiveX控件——Windows Media Player控件,建立自己的多媒体播放器

三、 界面设计和功能实现

1. 主界面设计结构框架图:

2. 打开VC 6.0,新建MFC工程,基于对话框,名称为多媒体课设

主界面

图形处理 图片处理 文字效果 音乐播放器 音频播放器

3. 向主窗口拖一个Tab控件,并调整大小使之占据2/3主窗口大小,并为Tab添加类向导,

添加IDC_TAB1的变量:m_tab

完成后在 “多媒体课设Dlg.cpp”中的OnInitDialog添加如下代码:

// Set the icon for this dialog. The framework does this automatically

// when the application's main window is not a dialog

SetIcon(m_hIcon, TRUE); // Set big icon

SetIcon(m_hIcon, FALSE); // Set small icon

// TODO: Add extra initialization here

m_tab.InsertItem(0,"图形处理");

m_tab.InsertItem(1,"图片处理");

m_tab.InsertItem(2,"文字处理");

m_tab.InsertItem(3,"音乐播放");

m_tab.InsertItem(4,"音频播放");

RECT rc;

m_tab.GetClientRect(&rc);

m_draw.Create(IDD_DRAW_DIALOG,&m_tab);

m_draw.SetWindowPos(NULL,5,20,rc.right,rc.bottom,SWP_SHOWWINDOW);

m_picture.Create(IDD_PICTURE_DIALOG,&m_tab);

m_picture.SetWindowPos(NULL,5,20,rc.right,rc.bottom,SWP_HIDEWINDOW);

m_music.Create(IDD_MUSIC_DIALOG,&m_tab);

m_music.SetWindowPos(NULL,5,20,rc.right,rc.bottom,SWP_HIDEWINDOW);

m_movie.Create(IDD_MOVIE_DIALOG,&m_tab);

m_movie.SetWindowPos(NULL,5,20,rc.right,rc.bottom,SWP_HIDEWINDOW);

m_word.Create(IDD_WORD_DIALOG,&m_tab);

m_word.SetWindowPos(NULL,5,20,rc.right,rc.bottom,SWP_HIDEWINDOW);

return TRUE; // return TRUE unless you set the focus to a control

在添加类向导OnSelchangeTab1()中添加代码:

void CMyDlg::OnSelchangeTab1(NMHDR* pNMHDR, LRESULT* pResult)

{

// TODO: Add your control notification handler code here

CRect rc;

m_tab.GetClientRect(&rc);

switch(m_tab.GetCurSel())

{

case 0:

m_movie.SetWindowPos(NULL,5,20,rc.right,rc.bottom,SWP_HIDEWINDOW);

m_music.SetWindowPos(NULL,5,20,rc.right,rc.bottom,SWP_HIDEWINDOW);

m_word.SetWindowPos(NULL,5,20,rc.right,rc.bottom,SWP_HIDEWINDOW);

m_picture.SetWindowPos(NULL,5,20,rc.right,rc.bottom,SWP_HIDEWINDOW);

m_draw.SetWindowPos(NULL,5,20,rc.right,rc.bottom,SWP_SHOWWINDOW);

break;

case 1:

m_movie.SetWindowPos(NULL,5,20,rc.right,rc.bottom,SWP_HIDEWINDOW);

m_music.SetWindowPos(NULL,5,20,rc.right,rc.bottom,SWP_HIDEWINDOW);

m_word.SetWindowPos(NULL,5,20,rc.right,rc.bottom,SWP_HIDEWINDOW);

m_draw.SetWindowPos(NULL,5,20,rc.right,rc.bottom,SWP_HIDEWINDOW);

m_picture.SetWindowPos(NULL,5,20,rc.right,rc.bottom,SWP_SHOWWINDOW);

break;

case 2:

m_movie.SetWindowPos(NULL,5,20,rc.right,rc.bottom,SWP_HIDEWINDOW);

m_music.SetWindowPos(NULL,5,20,rc.right,rc.bottom,SWP_HIDEWINDOW);

m_picture.SetWindowPos(NULL,5,20,rc.right,rc.bottom,SWP_HIDEWINDOW);