图象的渐显/渐隐是十分重要的图象效果,广泛运用于图象处理和多媒提娱乐软件。渐显/渐隐算法设计的最大困难是速度控制,包括定时和快速改变图象中各象素的颜色。如采用普通的全图扫描算法,则速度较慢,很难真正体现渐显/渐隐效果,自学编程网,www.zxbc.cn 。
利用Windows(3.x.95/98/NT)操作系统特殊的调色板管理和时间码定时机制能设计出有效的图象渐显/渐隐算法。Windows提供一种被称为调色板动画(paletteanimation)的颜色处理技术,它通过快速改变颜色调色板中所选取的表项中的颜色能模拟颜色的变化。设置时间码,定时调用该技术使图象颜色渐变就能实现图象的渐显和渐隐。
一、调色板动画
在VisualC++中实现调色板动画依赖于MFC类库提供的CPalette类和CDC类中的若干成员函数,其基本步骤如下:
调用CPalette::CreatePalette(LPLOGPALETTElpLogPalette)函数创建逻辑调色板,注意将参数LPLOGPALETTE所指向的各颜色表项结构的peFlags域设置为PC_RESERVED,以防止其它窗口同该调色板匹配颜色。;
调用CDC::selectPalette和CDC::RealizePalette函数选择和实现所创建的逻辑调色板;
调用CPalette::AnimatePalette函数改变颜色,实现调色板动画;
动画完成后应恢复系统调色板。
CPalette::AnimatePalette是其中最关键的函数,自学编程网,www.zxbc.cn ,其原型如下:
voidAnimatePalette(
UINTnStartIndex,//起始的表项号
UINTnNumEntries,//变化的表项数
LPPALETTEENTRYlpPaletteColors);//逻辑调色板表项指针
lpPaletteColors为指向PALETTEENTRY结构的指针,其中存储着逻辑调色板将要更新的颜色信息。PALETTEENTRY结构定义如下:
typedefstructtagPALETTEENTRY{//pe
BYTEpeRed;
BYTEpeGreen;
BYTEpeBlue;
BYTEpeFlags;
}PALETTEENTRY;
版权与免责声明
1、本站所发布的文章仅供技术交流参考,本站不主张将其做为决策的依据,浏览者可自愿选择采信与否,本站不对因采信这些信息所产生的任何问题负责。
2、本站部分文章来源于网络,其版权为原权利人所有。由于来源之故,有的文章未能获得作者姓名,署“未知”或“佚名”。对于这些文章,有知悉作者姓名的请告知本站,以便及时署名。如果作者要求删除,我们将予以删除。除此之外本站不再承担其它责任。
3、本站部分文章来源于本站原创,本站拥有所有权利。
4、如对本站发布的信息有异议,请联系我们,经本站确认后,将在三个工作日内做出修改或删除处理。
请参阅权责声明!