版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
多媒体实验报告姓名:学号:专业班级:授课老师:实验1图像采集与编辑实验实验目的了解数码相机基本使用。熟悉PHOTOSHOP在图像处理上的用途。掌握PHOTOSHOP一些基本的图像操作。实验内容用数码相机拍摄照片。将照片采集到电脑中处理。运用PHOTOSHOP进行图像的编辑与创作。实验预备知识ADOBEPHOTOSHOP是Thomas和JohnKnoll俩兄弟设计制作,而后与Adobe公司合作,于1989年推行的一个集传统的暗房技术和印前处理功能于一体的综合图像处理软件,它将设计师和使用者集于一体,给图形设计界增添了巨大的活力。位图即点阵图是由许多小方格的不同色块组成的图像,其中每一个小方格被称为像素。Photoshop是一个位图处理软件,它可以真实的再现色彩丰富的世界。由于位图文件在存储时必须记录其组成画面中每一个像素的位置、色彩等数据,因此它的文件信息量大,分辨率越高,信息量越大。分辨率就是单位(英寸)长度所含像素的多少,单位为dpi。分辨率可分为图像分辨率、输出分辨率、扫描分辨率等,分辨率是决定图像输入、输出质量高低的关键。在一个数字化图像中,图像的尺寸、分辨率和文件的大小这三项之间是相互联系的。当用户决定了其中任意亮相,便可决定第三项的参数:文件的大小=图像的分辨率×图像尺寸。位图模式又叫黑白模式,它只能用黑色和白色表示图像。由于位图模式无法将色调复杂的图像完整的表现出来,因此,不宜用它来表现色调复杂的图像,但可以用此模式来处理黑白线稿或处理特殊的两色调高反差图像在Photoshop中不能将彩色图像直接转化为位图模式,必须先将此彩色图像转化为灰度模式,在转化为位图模式,转化后有几种不同的显示模式:50%阀值、图案仿色、扩散仿色和半调网屏。实验要求通过学习PHOTOSHOP的基本操作,制作以下三种图像编辑效果图。海市蜃楼效果试验要求:用数码照自己的照片,采用图形合并等技术,将自己的照片移植至提供的风景图片中,制造出海市蜃楼效果。预览成品:换脸技术试验要求:选择一张明星照片,将自己用数码照的照片中的脸换明星的脸,得到你的脸和明星的身材的新明星组合体。预览成品:特殊字体试验要求:将自己的名字、班级、学号等信息制作成如下字体中的任一种:发光字,火焰字,霓虹字,立体字。发光字效果:五、实验总结本次实验中我学到了很多关PS的知识,在这里我要谢谢老师的耐心教学和实验室老师的指导。这次实验让我们在学到实用知识的同时,也迅速提高了动手实践能力,为迅速跨入平面设计领域打下很好的的基础。我觉得多媒体技术的学习是很重要的,多媒体的应用现在也越来越多,比如处理图片,制作相册这些在生活的是会常常用到的。如果这些也不会,我想是会很麻烦的。在这半学期的学习中我了解了多媒体技术的基本概念,基本要素,基本原理,基本掌握一些软件的使用。通过今天的实验我认识到,多媒体技术是指通过计算机技术把文字、图形、图像、活动影像和声音等多媒体信息,进行综合处理和管理,使计算机成为能以人类习惯的方式提供信息服务的一种新技术。利用多媒体技术能给学生提供界面友好、形象直观的交互式学习环境,能给学生提供图文声并茂的多重感官综合刺激,还能让学生按超文本方式组织与管理各种教学信息和学科知识,这将对学生认知结构的形成与发展起到积极的作用。当前科技发展异常迅猛,每个人,不管是教师还是学生都必须不断学习。现代化教学手段能利用多种媒体组合,优化教学过程,突破教学重点、难点,提高教学质量和效率,学生参与和学习积极主动性,也可以得到充分的发挥。教师首先通过自学及时掌握最新的科技成果,丰富教学内容,提高教学质量,改变满堂灌的教学模式,在给学生提供自学条件的基础上,让学生自主地学习。把信息技术与学科进行整合,可以改变教材的观念和形式,改变教学环境、手段和方法,变革教学模式,有利于面向全体同学发展个性,有利于学生进行获取信息,处理信息,提高学生自主学习的能力。因此,在强调素质教育的今天,把信息技术与学科教学相结合是必要的而且也是紧迫的。实验2波形音频播放器实验目的了解Wave文件格式,并学习Windows下用MCI函数播放Wave文件。熟悉多媒体开发工具——VisualC++。制作波形音频播放器。其运行界面如下图所示:要求此播放器具有打开、播放、录制及保存波形音频文件的功能。预备知识VC6编程方法,MCI编程方法。Wave文件的结构用.wav为扩展名的文件格式称为波形文件格式(WAVEFileFormat),它是一种资源交换文件格式(ResourceInterchangeFileFormat,RIFF),RIFF格式是面向部分(chunk)的,一个RIFF文件是由一个或多个部分组成的,其中每一个部分都指向下一个部分。下图是一个RIFF文件结构的示意:波形文件格式支持存储各种采样频率和样本精度的声音数据,并支持声音数据的压缩。一个WAVE文件至少包含三个块RIFF块是其中最大的,整个WAVE文件就是一个RIFF块。Cksize紧跟在“RIFF”CKID之后出现,它包含一个值,等于文件的大小减去8个字节,这8个字节用来存储RIFF的CKID和CKSIZE。第二和第三块称为子块,包含在RIFF块之中。这些块的第一个块是“fmt”块,包含PCMWAVEFORMAT结构所需要的信息;第二个块“data”块紧跟在“fmt”之后,包含所有的数据波形。RIFF的CKSIZE等于“fmt”块和“data”块所占用的字节之和。为了读写RIFF文件,用户使用为多媒体块信息准备的叫MMCKINFO的标准的数据结构。在VC中这个结构定义为: typedefsruct{ FOURCCckid; DWORDcksize; FOURCCfccType; DWORDdwDataOffset; DWORDdwFlags; }MMCKINFO;设计多媒体程序,关键是对多种多媒体设备的控制和使用,在Windows操作系统中,对多媒体设备进行控制主要有三种方法:第一种方法是使用微软公司窗口系统中对多媒体支持的MCI,即媒体控制接口,MCI是多媒体设备和多媒体应用软件之间进行设备无关的沟通的桥梁。在VB和VC中MCI都得到了很好的支持;第二种方法,通过调用Windows的API(应用程序接口)多媒体相关函数实现媒体控制;第三种方法是使用OLE(ObjectLinking&Embedding),即对象嵌入和链接技术,它为不同数据之间共享数据和资源提供了有利的手段。实验步骤:用VC建立应用程序框架:打开文件菜单,点击新建,在弹出的对话框中选中MFCAppWizard(exe)后,选好你文件所需存储的目录,然后在工程中填入工程文件名,如下图所示:点击确定按钮在弹出的对话框中,按下图进行设置后,点击“完成”。编制应用程序界面:各控件的属性如下表所示:控件ID标题控件ID标题GroupBoxIDC_STATIC波形音频信息StaticIDC_RESOLUTIONStaticIDC_STATIC波形文件:StaticIDC_WAVE_LENGTHStaticIDC_STATIC声道:ButtonIDC_OPEN打开StaticIDC_STATIC采样率:ButtonIDC_PLAY播放StaticIDC_STATIC音频长度:ButtonIDC_RECORD录制StaticIDC_WAVE_NAMEButtonIDC_SAVE保存StaticIDC_CHANNELButtonIDC_STOP停止StaticIDC_SAMPLE_RATEPictureIDC_WAVE_GRAPH点击查看建立类向导,在MessageMaps中建立相应的消息函数OnOpen(),OnPlay(),OnRecord(),OnSave(),OnStop(),点击确定。建立处理波形音频的类CWaveAudio:工程添加工程ComponentsandControls,选中WaveAudio.ogx文件插入,可重用类CWaveAudio便添加到工程中。在CWavePlayerDlg类的头文件中将CWaveAudio的头文件包含进来。加入所需的功能:在CWavePlayerDlg类中加入以下成员变量CStringpath;//文件目录 CWaveAudiom_Wave;//可重用类的对象 intINFO_WAVEWIDE;//绘图框的宽度 intINFO_WAVEDEEP;//绘图框的高度 boolm_bOpen;//判断是否有波形音频文件打开右键点击Class中的CWavePlayerDlg,选中AddNumberFunction,如下所示,将绘图函数voidDrawWave(HDChdc,unsignedintx,unsignedinty,char*path)加到CWavePlayerDlg中。在BOOLCWavePlayerDlg::OnInitDialog()中进行初始化:CWnd*m_pWnd; m_pWnd=GetDlgItem(IDC_PLAY); m_pWnd->EnableWindow(false); m_pWnd=GetDlgItem(IDC_SAVE); m_pWnd->EnableWindow(false);在OnOpen(),OnPlay(),OnRecord(),OnSave(),OnStop()中添加代码如下:voidCWavePlayerDlg::OnOpen(){ //TODO:Addyourcontrolnotificationhandlercodehere CStringFilter,str; Filter="波形音频文件(*.WAV)|*.WAV||"; CFileDialogFileDlg(true,NULL,NULL,OFN_HIDEREADONLY,Filter); if(FileDlg.DoModal()==IDOK) { if(!m_Wave.Load(FileDlg.GetFileName())) { MessageBox("不能打开文件!","错误",MB_OK|MB_ICONSTOP); } CWnd*m_pWnd; m_pWnd=GetDlgItem(IDC_PLAY); m_pWnd->EnableWindow(true); } path=FileDlg.GetPathName(); SetDlgItemText(IDC_WAVE_NAME,FileDlg.GetFileName()); str.Format("%5.3f",m_Wave.GetSampleRate()/1000.); str+=_T("kHZ"); SetDlgItemText(IDC_SAMPLE_RATE,str); str.Empty(); switch(m_Wave.GetChannel()) { case1: str="单声道"; break; case2: str="立体声"; break; } SetDlgItemText(IDC_CHANNEL,str); str.Empty(); str.Format("%d",m_Wave.GetResolution()); str+="位"; SetDlgItemText(IDC_RESOLUTION,str); str.Empty(); str.Format("%2.2u:%02.2f:%02.2u",m_Wave.GetWaveLength()/1000/60, m_Wave.GetWaveLength()/1000.,m_Wave.GetWaveLength()/1000/3600); SetDlgItemText(IDC_WAVE_LENGTH,str); m_bOpen=true;}voidCWavePlayerDlg::OnPlay(){ //TODO:Addyourcontrolnotificationhandlercodehere m_Wave.Play(); }voidCWavePlayerDlg::OnRecord(){ //TODO:Addyourcontrolnotificationhandlercodehere CWnd*m_pWnd; m_pWnd=GetDlgItem(IDC_PLAY); m_pWnd->EnableWindow(false); m_pWnd=GetDlgItem(IDC_OPEN); m_pWnd->EnableWindow(false); m_pWnd=GetDlgItem(IDC_SAVE); m_pWnd->EnableWindow(false); m_Wave.Record();}voidCWavePlayerDlg::OnSave(){ //TODO:Addyourcontrolnotificationhandlercodehere CStringFilter; Filter="WaveFile(*.WAV)|*.WAV||"; CFileDialogFileDlg(false,NULL,NULL,OFN_OVERWRITEPROMPT,Filter); FileDlg.m_ofn.lpstrDefExt="wav"; if(FileDlg.DoModal()==IDOK) m_Wave.Save(FileDlg.GetPathName());}voidCWavePlayerDlg::OnStop(){ //TODO:Addyourcontrolnotificationhandlercodehere CWnd*m_pWnd; m_pWnd=GetDlgItem(IDC_PLAY); m_pWnd->EnableWindow(true); m_pWnd=GetDlgItem(IDC_OPEN); m_pWnd->EnableWindow(true); m_pWnd=GetDlgItem(IDC_SAVE); m_pWnd->EnableWindow(true); m_Wave.Stop();} 现在可以编译运行一下,可以发现你已经实现了绝大多数的功能。现在,我们将绘图功能添加进去,由于对话框的变动都会触发调用OnPaint()函数重绘客户区,我们在OnPaint()中加入以下代码:voidCWavePlayerDlg::OnPaint(){ if(IsIconic()) { …… } else { CDialog::OnPaint(); if(m_bOpen) { CWnd*m_pWnd; CRectrect; m_pWnd=GetDlgItem(IDC_WAVE_GRAPH); m_pWnd->GetClientRect(rect); INFO_WAVEWIDE=rect.Width(); INFO_WAVEDEEP=rect.Height(); CClientDCdc(m_pWnd); DrawWave(dc.m_hDC,rect.left,rect.top,(char*)path.operatorLPCTSTR()); } }} 我们就在OnPaint()中调用了DrawWave函数绘制波形,DrawWave函数的代码如下:voidCWavePlayerDlg::DrawWave(HDChdc,unsignedintx,unsignedinty,char*path){ HMMIOh; MMCKINFOmmParent,mmSub;//MMCKINFO结构中包含了有关部分的信息 GLOBALHANDLEgh; PCMWAVEFORMATwaveformat;//fmt部分结构 char*p; unsignedlongnextsample; longafactor; unsignedinti,n,amp; int*ip;HPENOldPen=(HPEN)SelectObject(hdc,GetStockObject(BLACK_PEN)); HBRUSHOldBrush=(HBRUSH)SelectObject(hdc,GetStockObject(WHITE_BRUSH)); Rectangle(hdc,x,y,x+INFO_WAVEWIDE,y+INFO_WAVEDEEP); if((h=mmioOpen(path,NULL,MMIO_READ))==NULL) return; mmParent.fccType=mmioFOURCC('W','A','V','E'); if(mmioDescend(h,(LPMMCKINFO)&mmParent,NULL,MMIO_FINDRIFF)) { mmioClose(h,0); return; } mmSub.ckid=mmioFOURCC('f','m','t',''); if(mmioDescend(h,(LPMMCKINFO)&mmSub,(LPMMCKINFO)&mmParent,MMIO_FINDCHUNK)) { mmioClose(h,0); return; } n=min((unsignedint)mmSub.cksize,sizeof(PCMWAVEFORMAT)); if(mmioRead(h,(LPSTR)&waveformat,n)!=(int)n) { mmioClose(h,0); return; } if(waveformat.wf.wFormatTag!=WAVE_FORMAT_PCM) { mmioClose(h,0); return; } mmioAscend(h,&mmSub,0);//当读出一个部分的数据后,退出该部分 mmSub.ckid=mmioFOURCC('d','a','t','a'); if(mmioDescend(h,(LPMMCKINFO)&mmSub,(LPMMCKINFO)&mmParent,MMIO_FINDCHUNK)) { mmioClose(h,0); return; } if(waveformat.wBitsPerSample==8&&waveformat.wf.nChannels==1) { nextsample=mmSub.cksize/(long)INFO_WAVEWIDE; afactor=2L*(255L/(long)INFO_WAVEDEEP); } elseif(waveformat.wBitsPerSample==8&&waveformat.wf.nChannels==1) { nextsample=2L*((mmSub.cksize/2L)/(long)INFO_WAVEWIDE); afactor=2L*(255L/(long)INFO_WAVEDEEP); } elseif(waveformat.wBitsPerSample>8&&waveformat.wf.nChannels==1) { nextsample=2L*((mmSub.cksize/(long)INFO_WAVEWIDE))&0xfffffffeL; afactor=2L*(65535L/(long)INFO_WAVEDEEP); } else { nextsample=4L*((mmSub.cksize/4L)/(long)INFO_WAVEWIDE)&0xfffffffeL; afactor=2L*(65535L/(long)INFO_WAVEDEEP); } MoveToEx(hdc,x,y+INFO_WAVEDEEP/2,NULL); LineTo(hdc,x+INFO_WAVEWIDE,y+INFO_WAVEDEEP/2); if((gh=GlobalAlloc(GMEM_MOVEABLE,mmSub.cksize))!=NULL) { if((p=(char*)GlobalLock(gh))!=NULL) { if(mmioRead(h,p,mmSub.cksize)==mmSub.cksize) { for(i=0;i<INFO_WAVEWIDE;) { ip=(int*)p; if(waveformat.wBitsPerSample==8&&waveformat.wf.nChannels==1) amp=(unsignedint)max(labs(((long)p[0]-128L)/afactor),1L); elseif(waveformat.wBitsPerSample==8&&waveformat.wf.nChannels==2) amp=(unsignedint)max(labs(((long)p[0]-128L+(long)p[1]-128L)/2)*/afactor,1L); elseif(waveformat.wBitsPerSample>8&&waveformat.wf.nChannels==1) amp=(unsignedint)max(labs((long)ip[0]/afactor),1L); else amp=(unsignedint)max(labs((((long)ip[0]+(long)ip[1])/2)/afactor),1L); if(amp>(unsignedint)INFO_WAVEDEEP/2) amp=INFO_WAVEDEEP/2-3; MoveToEx(hdc,x+i,y+(INFO_WAVEDEEP/2)-amp,NULL); LineTo(hdc,x+i,y+(INFO_WAVEDEEP/2)+amp); i+=2; p+=nextsample; } } GlobalUnlock(gh); } GlobalFree(gh); }SelectObject(hdc,OldPen); (HBRUSH)SelectObject(hdc,OldBrush); mmioClose(h,0); return;} 现在编译执行程序,一个简单的波形音频播放器已经完成了。实验注意事项:调试程序时,Ctrl+F7为Compile,Build为F7,运行时按F5。注意可重用类CwaveAudio的设计。熟练掌握MCI多媒体函数的应用。编译时,菜单选中“项目”“设置”,要在库的链接中加入winmm.lib。思考题a).什么是MCI接口?简述MCI所囊括的内容。答:MCI全称是Mediacontrolinterface即多媒体控制接口。简单的说,就是程序与多媒体解码器通讯的一个界面。可利用这个接口跳过硬件访问并调用本地符合MCI规格的多媒体解码驱动,完成对多媒体的回放录制与控制。从DX8之后MCI借助DirectShow和DirectMedia的强大支持成为了一个低技术难度,高性能,多功能的优秀多媒体接口,可支持MPEG1/2/4视频文件、QuickTime视频文件、WindowsMediaVideo视频文件和AVI视频文件等多种Windows常见视频的回放;还可支持MPC音频、ADPCM音频、AIFF音频、MPEGLayer1\\Layer2\\Layer3音频、WindowsMediaAudio音频等常见音频;另外MCI还嵌入了数字音乐合成器控制、录音接口和基于DShow的摄像头接口。其趣味性、可靠性和易用性特别适合初学API的编程爱好者。b).Windows下播放波形文件可采用几种方法?各有什么有缺点?答:波形文件是多媒体系统中存放数字化声音信息的标准格式文件。波形文件的高效播放是多媒体系统声音处理技术的关键。Windows环境下波形文件有四种播放方法,四种方法各有自己的优缺点。c).简述Windows下多媒体程序开发的特点。答:Windows的API对很多多媒体内容都可以支持。此外,directShow是非常重要的多媒体开发工具。WindowsMedia就是基于DirectShow的。五、实验总结经过本次实验,我掌握了VC++6.0的基本工具和音频播放器的简单制作,看起来很简单,制作起来还真不容易。在做本实验时,要先对程序代码进行理解,这样做起来才能得心应手。在制作的过程中出现了很多小问题,自己只能一点点摸索,在网上搜搜解决方法,最终还是把播放器做好了,虽然不是很精美,但是毕竟是自己一点一点做出来的,心里还是蛮高兴的。我会在以后的学习中更加努力,做得更好。实验3数字视频播放器实验目的进一步掌握MCI函数的应用。制作数字视频播放器,并具有以下功能:打开视频播放设备,播放视频文件,可静态观看每一帧视频,并且可设置播放速度,还能在全屏播放与正常播放之间转换。实验步骤:如实验2建立应用程序框架制作应用程序界面制作对话框对话框控件属性表控件ID标题控件ID标题pictrueIDC_DISPLAYStaticIDC_PLAY_SOUNDGroupBoxIDC_STATIC视频信息StaticIDC_FRAMESStaticIDC_STATIC视频文件名:StaticIDC_DEMENSIONStaticIDC_STATIC播放速度:ButtonIDC_OPEN打开StaticIDC_STATIC是否静音:ButtonIDC_PLAY播放StaticIDC_STATIC视频帧数:ButtonIDC_PAUSE暂停StaticIDC_STATIC视频尺寸:ButtonIDC_PRE上一帧StaticIDC_VIDEO_NAMEButtonIDC_NEXT下一帧StaticIDC_PLAY_SPEEDButtonIDC_STOP停止现在在应用程序中插入一个对话框资源,用来设置播放速度,其ID设为IDD_SPEED:IDD_SPEED对话框控件属性表控件ID标题EditBoxIDC_SPEEDButtonIDOK确定ButtonIDCANCEL取消还需象应用程序中插入一个对话框资源,用做视频输出窗口,ID为IDD_DISPLAY。(2).制作菜单插入一个菜单资源,将ID设为IDR_MAINFRAME。IDR_MAINFRAME中的菜单项菜单标题菜单项标题ID文件打开IDC_OPEN关闭IDC_OK选项静音IDC_SOUND全屏IDC_FULLSCREEN循环播放IDC_LOOP视频速度IDC_SPEED在你的主对话框的属性中的菜单项中,选中IDR_MAINFRAME现在编译一下,就得到了我们所要的界面。(3).添加消息处理函数在C***Dlg中需要添加的消息处理函数ID消息IDC_PLAYBN_CLICKEDIDC_STOPBN_CLICKEDIDC_PAUSEBN_CLICKEDIDC_PREBN_CLICKEDIDC_NEXTBN_CLICKEDIDC_OPENBN_CLICKEDIDC_SPEEDCOMMANDIDC_FULLSCREENCOMMANDIDC_LOOPCOMMANDIDC_SOUNDCOMMANDC***DlgWM_TIMER然后为IDD_SPEED对话框资源添加一个intm_speed成员变量完成应用程序功能设计将已设计好的类Cvideo加到你的工程中来,并使C***Dlg的头文件包含该类的头文件,然后在C***Dlg类的声明中加入以下代码:protected:CVideom_Video; boolm_bIsOpen; boolm_bSound; boolm_bLoop; boolm_bFullScreen; CDialog*display;初始化你的主对话框在OnInitDlialog()中//TODO:Addextrainitializationhere后加入以下代码: display=newCDialog; display->Create(IDD_DISPLAY); SetTimer(1,100,NULL);完成消息函数OnTimer,OnOpen,OnPlay,OnStop,OnPause,OnPre,OnNext,OnSound,OnLoop,OnFullScreen,OnSpeedvoidCVideoPlayerDlg::OnTimer(UINTnIDEvent){ //TODO:Addyourmessagehandlercodehereand/orcalldefault CWnd*m_pWnd=GetDlgItem(IDC_PLAY); m_pWnd->EnableWindow(m_bIsOpen); m_pWnd=GetDlgItem(IDC_PAUSE); m_pWnd->EnableWindow(m_bIsOpen); m_pWnd=GetDlgItem(IDC_STOP); m_pWnd->EnableWindow(m_bIsOpen); m_pWnd=GetDlgItem(IDC_NEXT); m_pWnd->EnableWindow(m_bIsOpen); m_pWnd=GetDlgItem(IDC_PRE); m_pWnd->EnableWindow(m_bIsOpen); if(m_bIsOpen) { CStringInfo; Info.Format("当前播放帧数:%d",m_Video.GetFrame()); m_pWnd=GetDlgItem(IDC_DISPLAY);//获得静态图像控件位置 CClientDCdc(m_pWnd); CRectrect; CBrushbrush(COLORREF(0)),*OldBrush; OldBrush=(CBrush*)dc.SelectObject(brush); m_pWnd->GetClientRect(rect);//获得静态图像控件大小 dc.SetTextColor(COLORREFRGB(0,0,255)); dc.SetBkColor(COLORREFRGB(0,0,0)); dc.FillRect(rect,&brush); CSizesize=dc.GetTextExtent(Info);//获得文本尺寸 dc.TextOut((rect.Width()-size.cx)/2,(rect.Height()-size.cy)/2,Info); dc.SelectObject(&OldBrush); CStringstr; str.Format("%d",m_Video.GetSpeed()); SetDlgItemText(IDC_PLAY_SPEED,str); str.Format("%d",m_Video.GetFrames()); SetDlgItemText(IDC_FRAMES,str); if(m_Video.GetSound()) str=_T("否"); else str=_T("是"); SetDlgItemText(IDC_PLAY_SOUND,str); } CDialog::OnTimer(nIDEvent);}voidCVideoPlayerDlg::OnOpen(){ //TODO:Addyourcontrolnotificationhandlercodehere CStringFilter,str; Filter="视频文件(*.AVI)|*.AVI||"; //得到窗口尺寸 CRectrect; this->GetWindowRect(rect); CFileDialogFileDlg(true,NULL,NULL,OFN_HIDEREADONLY,Filter); if(FileDlg.DoModal()==IDOK)//单击文件选择对话框的“确定”键 { if(!m_Video.Open(FileDlg.GetPathName(),display,0,0))//打开视频文件 { MessageBox("不能打开文件!","Error",MB_OK|MB_ICONSTOP); return; } //将显示屏幕定位在主对话框的下方,并根据视频大小确定屏幕大小 intBorder,Caption; Border=GetSystemMetrics(SM_CXSIZEFRAME); Caption=GetSystemMetrics(SM_CYCAPTION); display->SetWindowPos(this,rect.left+30,rect.bottom+30, m_Video.GetWidth()+Border,m_Video.GetHeight()+Caption+Border, SWP_SHOWWINDOW); display->ShowWindow(true); display->SetWindowText(FileDlg.GetFileName()); SetDlgItemText(IDC_VIDEO_NAME,FileDlg.GetFileName()); str.Format
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 幼儿园小班科学小实验教案
- 停车场中央空调安装施工方案
- 门窗节能专项检查记录
- 儿科护理学:儿童生长发育与健康教育
- 2026年土建质量员《专业管理实务》模拟考试高能含答案详解(轻巧夺冠)
- 2026年职业健康知识预测试题及答案详解1套
- 2026年电梯考证模拟题库完整答案详解
- 医疗废弃物处置质量考核标准手册
- 2026年县乡教师选调进城《教育学》模拟试题含答案详解【黄金题型】
- 2025安徽合肥庐江县乡村振兴投资有限公司招聘工作人员(第二批)及考试总笔试历年参考题库附带答案详解
- 急诊护理中的沟通技巧与人文关怀
- 消防车祸抢险救援
- 头颈部肿瘤基础知识课件
- 2025中国电建集团山东电力建设第一工程有限公司招聘笔试历年难易错考点试卷带答案解析试卷3套
- 写字楼分租合同范本
- 单侧双通道脊柱内镜技术
- 2025地理会考综合试卷及答案
- 化学史简明教程 课件全套 (韩福芹) 第1-7章化学知识的萌芽与积累-现代化学的发展趋势
- 筏板基础基础施工方案(鲁班奖-)
- 小学科学实验操作规范及方案
- Power-Query课件教学课件
评论
0/150
提交评论