- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
VC实现字幕叠加
VC实现字幕叠加
一. GDI编程基础 字幕叠加,应当是属于图形、图像处 理的范畴。在Windows平台上,图形、图像处理的方法当然首选GDI(Graphics Device Interface,图形设备接口)。GDI是什么?GDI其实是一套API函数;它们功能丰富,使用起来简单、灵活。下面,我们首先来介绍一些GDI编 程的基础知识。 GDI函数有很多,我们大致可以把它们分成如下几类: · 设备上下文(Device Context,简称DC)函数,如GetDC、CreateDC、DeleteDC等; · 画线函数,如LineTo、Polyline、Arc等; · 填充画图函数,如Ellipse、FillRect、Pie等; · 画图属性函数,如SetBkColor、SetBkMode、SetTextColor等; · 文本、字体函数,如TextOut、GetTextExtentPoint32、GetFontData等; · 位图函数,如SetPixel、BitBlt、StretchBlt等; · 坐标函数,如DPtoLP、LPtoDP、ScreenToClient、ClientToScreen等; · 映射函数,如SetMapMode、SetWindowExtEx、SetViewportExtEx等; · 元文件(MetaFile)函数,如PlayMetaFile、SetWinMetaFileBits等; · 区域(Region)函数,如FillRgn、FrameRgn、InvertRgn等; · 路径(Path)函数,如BeginPath、EndPath、StrokeAndFillPath等; · 裁剪(Clipping)函数,如SelectClipRgn、SelectClipPath等。 上述这些函数可以完成绘制用户界面中的各个部分,包括我们在Windows平台上司空见惯的窗口、菜单、工具条、按钮等。除了完成显示操作功能外,GDI还提供了一些绘图对象,用以渲染显示。这些GDI对象包括: 设备上下文(DC)——具有如显示器或打印机等输出设备的绘图属性信息的数据结构; 画笔(Pen)——用于绘制线条; 画刷(Brush)——用于图案的填充; 字体(Font)——用于确定文本字符的样式; 位图(Bitmap)——用于存储图像; 调色板(Palette)——屏幕上画图时可以使用的一些颜色的集合。 DC在GDI中是一个非常重要的概念。在MSDN上查看各个GDI函数的使用说明,我们会发现大部分GDI函数都有一个HDC类型的参数;HDC就是DC句柄。Windows应用程序进行图形、图像处理的一般操作步骤如下: 1. 取得指定窗口的DC; 2. 确定使用的坐标系及映射方式; 3. 进行图形、图像或文字处理; 4. 释放所使用的DC。 为了进一步简化GDI函数的使用,或者说为了适应面向对象的程序设计风格,微软的MFC类库提供了几个DC的封装类。这些类的继承关系如下: 图1 关于DC的几个MFC类的继承关系 我们知道,绝大部分MFC类都是从CObject类派生的,CDC类也不例外。我们看到,CDC类是最基本的DC封装类;它几乎对应封装了所有的GDI函数。另外,CDC类的各个派生类各有专门的用途: CClientDC——在窗口的客户区画图的DC; CMetaFileDC——用于操作Windows元文件的DC; CPaintDC——响应WM_PAINT消息时画图使用的DC,多见于MFC程序的OnDraw函数中; CWindowDC——在整个窗口范围(包括框架、工具条等)中画图的DC。 MFC除了对DC进行类封装外,对其它GDI对象也进行了类封装。这些类的继承关系如下:图2 GDI对象的MFC封装类的继承关系 CGdiObject——GDI对象的父类,定义了GDI对象封装类的一些公有函数接口; CBitmap——位图相关操作的封装类,包括位图的装入或创建等; CBrush——画刷对象的封装类; CFont——字体属性及相关操作的封装类; CPalette——调色板的封装类; CPen——画笔对象的封装类; CRgn——区域对象以及区域相关操作的封装类。 通过上述介绍,相信读者对GDI编程有了一定的了解。接下去,我们就来讨论卡拉OK字幕叠加的实现原理。二. 实现原理 字幕叠加,最基本的一种是在静态图像上进行的,一般就是直接在图像上输出标准的字符串,以合成新的图像帧;而视频上的字幕叠加
文档评论(0)