WEB开发网
开发学院软件开发VC VC实现卡拉OK字幕叠加 阅读

VC实现卡拉OK字幕叠加

 2010-05-25 20:36:36 来源:WEB开发网   
核心提示:一. GDI编程基础字幕叠加,应当是属于图形、图像处理的范畴,VC实现卡拉OK字幕叠加,在Windows平台上,图形、图像处理的方法当然首选GDI(Graphics Device Interface,相信读者对GDI编程有了一定的了解,接下去,图形设备接口),GDI是什么?GDI其实是一套API函数;它们功能丰富

一. 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字幕叠加的实现原理。

1 2 3 4  下一页

Tags:VC 实现 卡拉OK

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接