在VC中如何实现图象渐显和渐隐渐显

&>&VC++ 2005中图像渐现渐隐的设计
VC++ 2005中图像渐现渐隐的设计
上传大小:102KB
VC++ 2005中图像渐现渐隐的设计,经测试可以在VC++ 2005开发平台中稳定运行,非常适合初学者。
综合评分:0
{%username%}回复{%com_username%}{%time%}\
/*点击出现回复框*/
$(".respond_btn").on("click", function (e) {
$(this).parents(".rightLi").children(".respond_box").show();
e.stopPropagation();
$(".cancel_res").on("click", function (e) {
$(this).parents(".res_b").siblings(".res_area").val("");
$(this).parents(".respond_box").hide();
e.stopPropagation();
/*删除评论*/
$(".del_comment_c").on("click", function (e) {
var id = $(e.target).attr("id");
$.getJSON('/index.php/comment/do_invalid/' + id,
function (data) {
if (data.succ == 1) {
$(e.target).parents(".conLi").remove();
alert(data.msg);
$(".res_btn").click(function (e) {
var parentWrap = $(this).parents(".respond_box"),
q = parentWrap.find(".form1").serializeArray(),
resStr = $.trim(parentWrap.find(".res_area_r").val());
console.log(q);
//var res_area_r = $.trim($(".res_area_r").val());
if (resStr == '') {
$(".res_text").css({color: "red"});
$.post("/index.php/comment/do_comment_reply/", q,
function (data) {
if (data.succ == 1) {
var $target,
evt = e || window.
$target = $(evt.target || evt.srcElement);
var $dd = $target.parents('dd');
var $wrapReply = $dd.find('.respond_box');
console.log($wrapReply);
//var mess = $(".res_area_r").val();
var mess = resS
var str = str.replace(/{%header%}/g, data.header)
.replace(/{%href%}/g, 'http://' + window.location.host + '/user/' + data.username)
.replace(/{%username%}/g, data.username)
.replace(/{%com_username%}/g, data.com_username)
.replace(/{%time%}/g, data.time)
.replace(/{%id%}/g, data.id)
.replace(/{%mess%}/g, mess);
$dd.after(str);
$(".respond_box").hide();
$(".res_area_r").val("");
$(".res_area").val("");
$wrapReply.hide();
alert(data.msg);
}, "json");
/*删除回复*/
$(".rightLi").on("click", '.del_comment_r', function (e) {
var id = $(e.target).attr("id");
$.getJSON('/index.php/comment/do_comment_del/' + id,
function (data) {
if (data.succ == 1) {
$(e.target).parent().parent().parent().parent().parent().remove();
$(e.target).parents('.res_list').remove()
alert(data.msg);
//填充回复
function KeyP(v) {
var parentWrap = $(v).parents(".respond_box");
parentWrap.find(".res_area_r").val($.trim(parentWrap.find(".res_area").val()));
评论共有0条
综合评分:
积分/C币:3
VIP会员动态
CSDN下载频道资源及相关规则调整公告V11.10
下载频道用户反馈专区
下载频道积分规则调整V1710.18
spring mvc+mybatis+mysql+maven+bootstrap 整合实现增删查改简单实例.zip
资源所需积分/C币
当前拥有积分
当前拥有C币
输入下载码
为了良好体验,不建议使用迅雷下载
VC++ 2005中图像渐现渐隐的设计
会员到期时间:
剩余下载个数:
剩余积分:0
为了良好体验,不建议使用迅雷下载
积分不足!
资源所需积分/C币
当前拥有积分
您可以选择
程序员的必选
绿色安全资源
资源所需积分/C币
当前拥有积分
当前拥有C币
为了良好体验,不建议使用迅雷下载
资源所需积分/C币
当前拥有积分
当前拥有C币
为了良好体验,不建议使用迅雷下载
资源所需积分/C币
当前拥有积分
当前拥有C币
您的积分不足,将扣除 10 C币
为了良好体验,不建议使用迅雷下载
无法举报自己的资源
你当前的下载分为234。
你还不是VIP会员
开通VIP会员权限,免积分下载
你下载资源过于频繁,请输入验证码
您因违反CSDN下载频道规则而被锁定帐户,如有疑问,请联络:!
若举报审核通过,可返还被扣除的积分
被举报人:
请选择类型
资源无法下载 ( 404页面、下载失败、资源本身问题)
资源无法使用 (文件损坏、内容缺失、题文不符)
侵犯版权资源 (侵犯公司或个人版权)
虚假资源 (恶意欺诈、刷分资源)
含色情、危害国家安全内容
含广告、木马病毒资源
*投诉人姓名:
*投诉人联系方式:
*版权证明:
*详细原因:
VC++ 2005中图像渐现渐隐的设计用VC 实现图象渐显和渐隐 - 新云软件园
您现在的位置:&&&&&&
用VC 实现图象渐显和渐隐
08:48作者:佚名来源:本站整理浏览:291 评论:
作者: 周长发摘 要 图象的渐显/渐隐被广泛运用与图象处理和多媒提娱乐软件。本文基于Windows的调色板动画和时间码技术设计了通用的图象渐显和渐隐算法,并实现了其Visual C++程序编码。关键词 渐显、渐隐、调色板、调色板动画、时间码图象的渐显/渐隐是十分重要的图象效果,广泛运用于图象处理和多媒提娱乐软件。渐显/渐隐算法设计的最大困难是速度控制,包括定时和快速改变图象中各象素的颜色。如采用普通的全图扫描算法,则速度较慢,很难真正体现渐显/渐隐效果。利用Windows(3.x.95/98/NT)操作系统特殊的调色板管理和时间码定时机制能设计出有效的图象渐显/渐隐算法。Windows提供一种被称为调色板动画(palette animation)的颜色处理技术,它通过快速改变颜色调色板中所选取的表项中的颜色能模拟颜色的变化。设置时间码,定时调用该技术使图象颜色渐变就能实现图象的渐显和渐隐。一、调色板动画在Visual C++中实现调色板动画依赖于MFC类库提供的CPalette类和CDC类中的若干成员函数,其基本步骤如下:调用CPalette::CreatePalette(LPLOGPALETTE lpLogPalette)函数创建逻辑调色板,注意将参数LPLOGPALETTE所指向的各颜色表项结构的peFlags域设置为PC_RESERVED,以防止其它窗口同该调色板匹配颜色。; 调用CDC::SelectPalette和CDC::RealizePalette函数选择和实现所创建的逻辑调色板; 调用CPalette::AnimatePalette函数改变颜色,实现调色板动画; 动画完成后应恢复系统调色板。 CPalette::AnimatePalette是其中最关键的函数,其原型如下:void AnimatePalette(UINT nStartIndex, // 起始的表项号UINT nNumEntries, // 变化的表项数LPPALETTEENTRY lpPaletteColors ); // 逻辑调色板表项指针lpPaletteColors为指向PALETTEENTRY结构的指针,其中存储着逻辑调色板将要更新的颜色信息。PALETTEENTRY结构定义如下:typedef struct tagPALETTEENTRY { // pe BYTE peR BYTE peG BYTE peB BYTE peF } PALETTEENTRY; peRed、peGreen、peBlue分别表示逻辑调色板项的R、G、B颜色分量值。peFlags 应被置为PC_RESERVED 。nStartIndex为lpPaletteColors中将变化的起始表项号,nNumEntries 为lpPaletteColors中将变化的表项数。二、时间码定时CWnd::SetTimer函数可设置一个系统时间码,并指定每经过一定的时间间隔使Windows系统发送一个WM_TIMER消息到窗口的消息队列中。窗口在每当接收到相应的WM_TIMER消息时做一定的处理,便实现了定时处理。通常应在窗口的消息循环中接受和处理WM_TIMER消息,这样将很难编制通用的定时操作。通用的定时操作应将定时处理封装在一个函数中,而不与其它的代码纠缠在一起。笔者实现这一技术的技巧是,在循环操作中截获窗口消息,如消息为指定的时间码消息,则进行定时处理;否则分发消息给窗口消息处理机制。如果定时操作已结束,则修改循环标志,退出循环。具体的代码如下:………………………………// 设置时间码,pWnd为处理定时操作的窗口对象指针pWnd-&SetTimer(0x100, uTimeOut, NULL);// 屏蔽鼠标操作,使定时操作不受影响pWnd-&SetCapture();// 开始定时操作BOOL bDone = FALSE;MSGwhile (! bDone){if (::PeekMessage(&msg, NULL, 0, 0, PM_REMOVE)){if (msg.message == WM_TIMER && msg. WParam == 0x100){…………………..定时操作代码…………………..// 如定时操作完成,则设置循环标志,结束操作if (定时操作完成)bDone = TRUE;}::TranslateMessage(&msg);::DispatchMessage(&msg);}}// 释放鼠标::ReleaseCapture();// 删除时间码pWnd-&KillTimer(0x100);…………………………..函数PeekMessage截获窗口消息,TranslateMessage和DispatchMessage函数解释和分发除指定时间码消息之外的所有消息,以避免丢失消息。三、渐显渐显就是将显示颜色由黑色(RGB(0, 0, 0))逐渐变化为图象各象素的颜色的过程。开始时调用CPalette::GetPaletteEntries函数保存图象调色板的各逻辑表项信息,然后调用CPalette::SetPaletteEntries函数将逻辑调色板中各逻辑表项的peRed、peGreen、peBlue置为0,定时调用CPalette::AnimatePalette,每次将各逻辑表项的peRed、peGreen、peBlue值增加一个变化量,直到它们分别等于图象逻辑调色板中各逻辑表项的peRed、peGreen、peBlue值。下面的函数FadeIn通过对调色板颜色表项中的各颜色分量值先设为0,然后进行递增,直到所有颜色值都恢复成原调色板中颜色值来实现渐显。// 图象渐显效果// 参数:// pWnd ?C 显示图象的窗口// pPal ?C 调色板指针// nDeta ?C 各颜色分量的减小量// uTimeOut ?C 时间的变化量void FadeIn(CWnd *pWnd, CPalette *pPal, int nDeta, UINT uTimeOut) {// 保留原来的调色板颜色表项int nTotalColors = pPal-&GetEntryCount();PALETTEENTRY PaletteColors0[256];pPal-&GetPaletteEntries(0, nTotalColors, PaletteColors0);// 先将调色板表项中各颜色分量置为0PALETTEENTRY PaletteColors1[256];for (int i=0; i&nTotalC ++i){PaletteColors1.peRed = 0;PaletteColors1.peGreen = 0;PaletteColors1.peBlue = 0;PaletteColors1.peFlags = PC_RESERVED;}pPal-&SetPaletteEntries(0, nTotalColors, PaletteColors1);pPal-&AnimatePalette(0, nTotalColors, PaletteColors1);// 设置时间码pWnd-&SetTimer(0x100, uTimeOut, NULL);// 开始渐显pWnd-&SetCapture();BOOL bDone = FALSE;MSGwhile (! bDone){if (::PeekMessage(&msg, NULL, 0, 0, PM_REMOVE)){if (msg.message == WM_TIMER && msg.wParam == 0x100){CClientDC dc(pWnd);CPalette *pOldPal = dc.SelectPalette(pPal, FALSE);dc.RealizePalette();// 递增各颜色分量PALETTEENTRY PaletteColors[256];pPal-&GetPaletteEntries(0, nTotalColors, PaletteColors);BOOL bRedZero=FALSE;BOOL bGreenZero=FALSE;BOOL bBlueZero=FALSE;for (int i=0; i&nTotalC ++i){if (PaletteColors.peRed + nDeta &PaletteColors0.peRed){PaletteColors.peRed += nDbRedZero = FALSE;}else if (PaletteColors.peRed + 1 &PaletteColors0.peRed){PaletteColors.peRed++;bRedZero = FALSE;}elsebRedZero = TRUE;if (PaletteColors.peGreen + nDeta &PaletteColors0.peGreen){PaletteColors.peGreen += nDbGreenZero = FALSE;}else if (PaletteColors.peGreen + 1 &PaletteColors0.peGreen){PaletteColors.peGreen++;bGreenZero = FALSE;}elsebGreenZero = TRUE;if (PaletteColors.peBlue + nDeta &PaletteColors0.peBlue){PaletteColors.peBlue += nDbBlueZero = FALSE;}else if (PaletteColors.peBlue +1 &PaletteColors0.peBlue){PaletteColors.peBlue++;bBlueZero = FALSE;}elsebBlueZero = TRUE;}// 直到恢复原始值结束bDone = bRedZero && bGreenZero && bBlueZ// 使系统改变调色板pPal-&AnimatePalette(0, nTotalColors, PaletteColors);}::TranslateMessage(&msg);::DispatchMessage(&msg);}}::ReleaseCapture();pWnd-&KillTimer(0x100);// 恢复原始调色板pPal-&SetPaletteEntries(0, nTotalColors, PaletteColors0);pPal-&AnimatePalette(0, nTotalColors, PaletteColors0);}四、渐隐渐隐就是将显示颜色由图象各象素的颜色逐渐变化为黑色(RGB(0, 0, 0))的过程,即定时调用CPalette::AnimatePalette,每次将各逻辑表项的peRed、peGreen、peBlue值减小一个变化量,直到它们都为0。下面的函数FadeOut通过对调色板颜色表项中的各颜色分量值进行递减,直到所有颜色值都变成0(即黑色)来实现渐隐。// 图象渐隐效果// 参数:// pWnd ?C 显示图象的窗口// pPal ?C 调色板指针// nDeta ?C 各颜色分量的减小量// uTimeOut ?C 时间的变化量void FadeOut(CWnd *pWnd, CPalette *pPal, int nDeta, UINT uTimeOut) {// 保留原来的调色板颜色表项int nTotalColors = pPal-&GetEntryCount();PALETTEENTRY PaletteColors0[256];pPal-&GetPaletteEntries(0, nTotalColors, PaletteColors0);// 设置时间码pWnd-&SetTimer(0x100, uTimeOut, NULL);// 开始渐隐pWnd-&SetCapture();BOOL bDone = FALSE;MSGwhile (! bDone){if (::PeekMessage(&msg, NULL, 0, 0, PM_REMOVE)){if (msg.message == WM_TIMER && msg.wParam == 0x100){CClientDC dc(pWnd);CPalette *pOldPal = dc.SelectPalette(pPal, FALSE);dc.RealizePalette();PALETTEENTRY PaletteColors[256];pPal-&GetPaletteEntries(0, nTotalColors, PaletteColors);BOOL bRedZero=FALSE;BOOL bGreenZero=FALSE;BOOL bBlueZero=FALSE;// 递减颜色分量for (int i=0; i&nTotalC ++i){if (PaletteColors.peRed & nDeta){PaletteColors.peRed -= nDbRedZero = FALSE;}else if (PaletteColors.peRed & 1){PaletteColors.peRed--;bRedZero = FALSE;}elsebRedZero = TRUE;if (PaletteColors.peGreen & nDeta){PaletteColors.peGreen -= nDbGreenZero = FALSE;}else if (PaletteColors.peGreen & 1){PaletteColors.peGreen--;bGreenZero = FALSE;}elsebGreenZero = TRUE;if (PaletteColors.peBlue & nDeta){PaletteColors.peBlue -= nDbBlueZero = FALSE;}else if (PaletteColors.peBlue & 1){PaletteColors.peBlue--;bBlueZero = FALSE;}elsebBlueZero = TRUE;}// 如所有颜色分量都为0,则结束渐隐bDone = bRedZero && bGreenZero && bBlueZ// 使系统改变调色板pPal-&AnimatePalette(0, nTotalColors, PaletteColors);}::TranslateMessage(&msg);::DispatchMessage(&msg);}}::ReleaseCapture();pWnd-&KillTimer(0x100);// 恢复原始调色板pPal-&SetPaletteEntries(0, nTotalColors, PaletteColors0);pPal-&AnimatePalette(0, nTotalColors, PaletteColors0);}
顶一下(53)
流星蝴蝶剑连招表:以下A为攻击键(鼠标左键...
12345678910
关注新云安卓游戏网&>&MFC渐隐渐现
MFC渐隐渐现
上传大小:1.95MB
mfc上实现渐隐渐现效果,并能实现界面美化
综合评分:5
{%username%}回复{%com_username%}{%time%}\
/*点击出现回复框*/
$(".respond_btn").on("click", function (e) {
$(this).parents(".rightLi").children(".respond_box").show();
e.stopPropagation();
$(".cancel_res").on("click", function (e) {
$(this).parents(".res_b").siblings(".res_area").val("");
$(this).parents(".respond_box").hide();
e.stopPropagation();
/*删除评论*/
$(".del_comment_c").on("click", function (e) {
var id = $(e.target).attr("id");
$.getJSON('/index.php/comment/do_invalid/' + id,
function (data) {
if (data.succ == 1) {
$(e.target).parents(".conLi").remove();
alert(data.msg);
$(".res_btn").click(function (e) {
var parentWrap = $(this).parents(".respond_box"),
q = parentWrap.find(".form1").serializeArray(),
resStr = $.trim(parentWrap.find(".res_area_r").val());
console.log(q);
//var res_area_r = $.trim($(".res_area_r").val());
if (resStr == '') {
$(".res_text").css({color: "red"});
$.post("/index.php/comment/do_comment_reply/", q,
function (data) {
if (data.succ == 1) {
var $target,
evt = e || window.
$target = $(evt.target || evt.srcElement);
var $dd = $target.parents('dd');
var $wrapReply = $dd.find('.respond_box');
console.log($wrapReply);
//var mess = $(".res_area_r").val();
var mess = resS
var str = str.replace(/{%header%}/g, data.header)
.replace(/{%href%}/g, 'http://' + window.location.host + '/user/' + data.username)
.replace(/{%username%}/g, data.username)
.replace(/{%com_username%}/g, data.com_username)
.replace(/{%time%}/g, data.time)
.replace(/{%id%}/g, data.id)
.replace(/{%mess%}/g, mess);
$dd.after(str);
$(".respond_box").hide();
$(".res_area_r").val("");
$(".res_area").val("");
$wrapReply.hide();
alert(data.msg);
}, "json");
/*删除回复*/
$(".rightLi").on("click", '.del_comment_r', function (e) {
var id = $(e.target).attr("id");
$.getJSON('/index.php/comment/do_comment_del/' + id,
function (data) {
if (data.succ == 1) {
$(e.target).parent().parent().parent().parent().parent().remove();
$(e.target).parents('.res_list').remove()
alert(data.msg);
//填充回复
function KeyP(v) {
var parentWrap = $(v).parents(".respond_box");
parentWrap.find(".res_area_r").val($.trim(parentWrap.find(".res_area").val()));
评论共有2条
只是调用一个函数而已啊
挺好玩的,使用非常简单
VIP会员动态
CSDN下载频道资源及相关规则调整公告V11.10
下载频道用户反馈专区
下载频道积分规则调整V1710.18
spring mvc+mybatis+mysql+maven+bootstrap 整合实现增删查改简单实例.zip
资源所需积分/C币
当前拥有积分
当前拥有C币
输入下载码
为了良好体验,不建议使用迅雷下载
MFC渐隐渐现
会员到期时间:
剩余下载个数:
剩余积分:0
为了良好体验,不建议使用迅雷下载
积分不足!
资源所需积分/C币
当前拥有积分
您可以选择
程序员的必选
绿色安全资源
资源所需积分/C币
当前拥有积分
当前拥有C币
为了良好体验,不建议使用迅雷下载
资源所需积分/C币
当前拥有积分
当前拥有C币
为了良好体验,不建议使用迅雷下载
资源所需积分/C币
当前拥有积分
当前拥有C币
您的积分不足,将扣除 10 C币
为了良好体验,不建议使用迅雷下载
无法举报自己的资源
你当前的下载分为234。
你还不是VIP会员
开通VIP会员权限,免积分下载
你下载资源过于频繁,请输入验证码
您因违反CSDN下载频道规则而被锁定帐户,如有疑问,请联络:!
若举报审核通过,可返还被扣除的积分
被举报人:
请选择类型
资源无法下载 ( 404页面、下载失败、资源本身问题)
资源无法使用 (文件损坏、内容缺失、题文不符)
侵犯版权资源 (侵犯公司或个人版权)
虚假资源 (恶意欺诈、刷分资源)
含色情、危害国家安全内容
含广告、木马病毒资源
*投诉人姓名:
*投诉人联系方式:
*版权证明:
*详细原因:
MFC渐隐渐现请问如何用VFP 6.0实现财务软件中的凭证输入模块
[问题点数:0分]
本版专家分:0
结帖率 100%
CSDN今日推荐
本版专家分:400
本版专家分:0
本版专家分:80
本版专家分:0
本版专家分:400
本版专家分:160
本版专家分:0
匿名用户不能发表回复!
其他相关推荐谈谈大家是怎么实现按钮特效
之 鼠标离开后的渐隐到原来效果
[问题点数:20分,结帖人bojie5744]
本版专家分:3647
结帖率 100%
CSDN今日推荐
本版专家分:3647
本版专家分:3647
本版专家分:8739
本版专家分:3647
本版专家分:3647
本版专家分:394
本版专家分:140608
2013年10月 荣获微软MVP称号2012年10月 荣获微软MVP称号2011年10月 荣获微软MVP称号2010年10月 荣获微软MVP称号
2012年4月 VC/MFC大版内专家分月排行榜第一
2012年5月 VC/MFC大版内专家分月排行榜第二2012年3月 VC/MFC大版内专家分月排行榜第二2011年7月 VC/MFC大版内专家分月排行榜第二2011年1月 VC/MFC大版内专家分月排行榜第二2010年12月 VC/MFC大版内专家分月排行榜第二2010年9月 VC/MFC大版内专家分月排行榜第二2010年6月 VC/MFC大版内专家分月排行榜第二2010年5月 VC/MFC大版内专家分月排行榜第二2010年4月 VC/MFC大版内专家分月排行榜第二
2010年11月 VC/MFC大版内专家分月排行榜第三
匿名用户不能发表回复!
其他相关推荐

我要回帖

更多关于 渐隐渐显 的文章

 

随机推荐