ImageVerifierCode 换一换
格式:DOCX , 页数:78 ,大小:1.27MB ,
资源ID:11215528      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/11215528.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(多媒体编程课程设计.docx)为本站会员(b****7)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

多媒体编程课程设计.docx

1、多媒体编程课程设计 南京工程学院多媒体编程基础课程综合作业说明书题 目 多媒体处理综合应用设计 班 级 学 生 姓 名 刘土豪 学 号 * 2013 年 06 月 07 日一、程序功能与设计思路设计目标与具有的功能:必须含有文字处理、绘图、图像、音频视频四部分内容各3种以上功能,界面及应用方法自己根据软件的特色综合考虑,每位同学必须自己设计一个动画标志,放在【帮助】对话框中,或者窗口界面上设计思路:1)图形处理:可以选择直线,矩形,椭圆,涂鸦进行绘画可以选择线的形状:实线,虚线,点线可以改变线条的颜色可以改变线条的宽度可以进行多边形填充颜色并可以改变颜色2)图片处理:可以打开BMP格式的图片可

2、以进行锐化,浮雕,反色等图片处理效果可以显示鼠标在图片上坐标处的颜色值和颜色3)文字处理:实现至少少三种文字特效,比如:文字渐变,旋转体,3D,文字倾斜,下划线,空心字等4)音乐播放器:可以打开mp3,wma,wvi格式的歌曲可以控制音乐的播放、暂停、停止可以指定播放当前音乐的上一个或下一个音乐在列表中随意选择要播放的音乐在播放时,可以获取并显示当前播放音乐的信息可以调节音乐的音量5)视频播放器:可以打开MP3,WMA,WMV,AVI,RM,RMVB,FLV,MP4等格式在列表中随意选择要播放的媒体文件控制媒体文件的播放、暂停、停止、快进、快退指定播放当前文件的上一个或下一个媒体文件在播放时,

3、可以获取并显示当前播放媒体的文件信息播放模式可以进行进行选择可以对播放列表或列表中的选项进行删除操作二、相关原理知识介绍(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):常

4、用于填充个区域诸如多边形,椭圆和路径等图形内部区域 创建画刷:(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)图片处理: B

5、itBlt,用于从源设备中复制位图到目标设备中,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轴逻辑坐标。nY

6、Src:指定源矩形区域左上角的Y轴逻辑坐标。dwRop:指定光栅操作代码。这些代码将定义源矩形区域的颜色数据,如何与目标矩形区域的颜色数据组合以完成最后的颜色。(3)文字处理:输出文字Textout():用当前字体在指定位置处写一个字符串TextOut(int x,int y,Cstring string):文本起点的x坐标和y坐标以及要绘制的字符串创建字体LOGFONT 结构(4)音频播放器:使用VC+6.0强大的MFC、AppWizard、Class Wizard和其中的多种控件可以很方便地建立各种应用程序。同时想要实现更高级更复杂的功能,也可以借助ActiveX控件资源,用这些现有的控件

7、资源,可以省去自己编程的复杂过程,从而实现更高级的功能。本次课程设计要使用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 doe

8、s this automatically / when the applications 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

9、.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_

10、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); retu

11、rn 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

12、,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_SHO

13、WWINDOW); 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

14、.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); m_draw.SetWindowPos(NUL

15、L,5,20,rc.right,rc.bottom,SWP_HIDEWINDOW); m_word.SetWindowPos(NULL,5,20,rc.right,rc.bottom,SWP_SHOWWINDOW); break; case 3: m_movie.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,r

16、c.bottom,SWP_HIDEWINDOW); m_draw.SetWindowPos(NULL,5,20,rc.right,rc.bottom,SWP_HIDEWINDOW); m_music.SetWindowPos(NULL,5,20,rc.right,rc.bottom,SWP_SHOWWINDOW); break; case 4: m_music.SetWindowPos(NULL,5,20,rc.right,rc.bottom,SWP_HIDEWINDOW); m_word.SetWindowPos(NULL,5,20,rc.right,rc.bottom,SWP_HIDEWI

17、NDOW); m_picture.SetWindowPos(NULL,5,20,rc.right,rc.bottom,SWP_HIDEWINDOW); m_draw.SetWindowPos(NULL,5,20,rc.right,rc.bottom,SWP_HIDEWINDOW); m_movie.SetWindowPos(NULL,5,20,rc.right,rc.bottom,SWP_SHOWWINDOW); break; *pResult = 0;4.本作业分为5个部分:图形处理,图片处理,文字处理,音乐播放,音频播放(1)分别建立5个资源:选择菜单栏的“插入”,选择窗体,窗体名称分别为

18、:DRAW,Picture,Word,MUSIC,MOVIE并将窗体的样式改为如下:(2)分别为5个窗体创建变量名称:在 “多媒课设Dlg.h”中添加变量:另外将5个部分的头文件全部加到“多媒体课设Dlg.h”中,才能调用哦(3)插入背景图片:菜单栏选择“插入”,选择“资源”,选择“Bitmap”,点击“引入”,选择BMP格式的图片名称为IDB_BITMAP4,在OnPaint()添加如下代码: else / CDialog:OnPaint(); CPaintDC dc(this); CRect rect; GetClientRect(&rect); CDC dcMem; dcMem.Crea

19、teCompatibleDC(&dc); CBitmap bmpBackground; bmpBackground.LoadBitmap(IDB_BITMAP4); BITMAP bitmap; bmpBackground.GetBitmap(&bitmap); CBitmap *pbmpOld=dcMem.SelectObject(&bmpBackground); dc.StretchBlt(0,0,rect.Width(),rect.Height(),&dcMem,0,0,bitmap.bmWidth,bitmap.bmHeight,SRCCOPY);二各个板块设计:(1)图形处理:图形处

20、理设计框架图: 设计如图:插件名称ID直线IDC_Line矩形IDC_Rect椭圆IDC_Elipse涂鸦IDC_Tuya线型IDC_Linestyle线宽IDC_Linewidth画笔颜色IDC_Pen color填充颜色IDC_Brushcolor清空面板IDC_clear绘画区域IDC_Show功能实现:在Draw.h添加变量:设置默认值:DRAW:DRAW(CWnd* pParent) : CDialog(DRAW:IDD, pParent) /AFX_DATA_INIT(DRAW) m_linewidth = 0; f_move=0; color_pen=RGB(255,0,0);

21、color_brush=RGB(255,255,255); Hcursor=AfxGetApp()-LoadStandardCursor(IDC_CROSS); /AFX_DATA_INIT在OnInitDialog()中设置线型的选择和默认值,代码如下:BOOL DRAW:OnInitDialog() CDialog:OnInitDialog(); / TODO: Add extra initialization here CheckRadioButton(IDC_Line,IDC_Tuya,IDC_Rect);/默认选择画矩形m_linestyle.AddString(实线); m_lin

22、estyle.AddString(虚线); m_linestyle.AddString(点线); m_linestyle.SetCurSel(0);/默认画实线 return TRUE; / return TRUE unless you set the focus to a control / EXCEPTION: OCX Property Pages should return FALSE在OnPaint添加如下代码:void DRAW:OnPaint() CPaintDC dc(this); / device context for painting / TODO: Add your me

23、ssage handler code here UpdateData(TRUE); CRect rect; GetDlgItem(IDC_SHOW)-GetWindowRect(&rect); ScreenToClient(&rect); CBrush brush(RGB(255,255,255); dc.FillRect(CRect(rect.left,rect.top+8,rect.right,rect.bottom),&brush); / Do not call CDialog:OnPaint() for painting messages添加LButtonDown函数响应:void D

24、RAW:OnLButtonDown(UINT nFlags, CPoint point) / TODO: Add your message handler code here and/or call default UpdateData(TRUE); m_BeginPoint = point; m_EndPoint = point; SetCapture();/执行这条语句后,当鼠标移动到本窗口以外时,鼠标消息仍然被发送给本窗口; f_move = 1; CRect rect; GetClientRect(&rect); ClientToScreen(&rect); CDialog:OnLBu

25、ttonDown(nFlags, point);添加LButtonUp函数响应:void DRAW:OnLButtonUp(UINT nFlags, CPoint point) / TODO: Add your message handler code here and/or call default CDC *dc=GetDC(); if(f_move) :ReleaseCapture();/停止捕获鼠标消息 draw(point,1); f_move = 0; CDialog:OnLButtonUp(nFlags, point);添加MouseMove函数响应:void DRAW:OnMo

26、useMove(UINT nFlags, CPoint point) / TODO: Add your message handler code here and/or call default draw(point,0); CDialog:OnMouseMove(nFlags, point);给“线型按钮”添加CBN_SELCHANCE响应函数,代码如下:void DRAW:OnSelchangeLinestyle() / TODO: Add your control notification handler code here CString str; m_linestyle.GetLBT

27、ext(m_linestyle.GetCurSel(),str); if(0 = str.Compare(实线) type = PS_SOLID; if(0 = str.Compare(虚线) type = PS_DASH; if(0 = str.Compare(点线) type = PS_DOT; 添加draw()函数,实现各种功能的绘图:void DRAW:draw(CPoint point, int k) CPen pen(type,m_linewidth,color_pen); CClientDC ClientDC(this); ClientDC.SelectObject(&pen);

28、 CBrush brush(color_brush); ClientDC.SelectObject(&brush); int j; j = GetCheckedRadioButton(IDC_Line,IDC_Tuya); if(f_move) switch(j) case IDC_Rect: ClientDC.SetROP2(R2_NOT); ClientDC.MoveTo(m_BeginPoint); ClientDC.Rectangle(m_BeginPoint.x,m_BeginPoint.y,m_EndPoint.x,m_EndPoint.y); if(k=1) ClientDC.S

29、etROP2(R2_COPYPEN); ClientDC.MoveTo(m_BeginPoint); ClientDC.Rectangle(m_BeginPoint.x,m_BeginPoint.y,point.x,point.y); m_EndPoint=point; break; case IDC_Line: ClientDC.SetROP2(R2_NOT); ClientDC.MoveTo(m_BeginPoint); ClientDC.LineTo(point); if(k = 1) ClientDC.SetROP2(R2_COPYPEN); ClientDC.MoveTo(m_BeginPoint); ClientDC.LineTo(point); m_EndPoint=point; break; case IDC_Ellipse: ClientDC.SetROP2(R2_NOT); ClientDC.MoveTo(m_BeginPoint); ClientDC.Ellipse(m_BeginPoint.x,m_BeginPoint.y,m_EndPoint.x,m_EndPoint.y); if(k=1) ClientDC.SetROP2(R2_COPYPEN); Client

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1