社区
图形处理/算法
帖子详情
怎样用vc实现文字的渐隐效果?
listream1
2004-09-30 09:18:33
怎样用vc实现文字的渐隐效果?
...全文
77
2
打赏
收藏
怎样用vc实现文字的渐隐效果?
怎样用vc实现文字的渐隐效果?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
2 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
54783szg
2004-09-30
打赏
举报
回复
渐隐就是将显示颜色由图象各象素的颜色逐渐变化为黑色(RGB(0, 0, 0))的过程,即定时调用CPalette::AnimatePalette,每次将各逻辑表项的peRed、peGreen、peBlue值减小一个变化量,直到它们都为0。
下面的函数FadeOut通过对调色板颜色表项中的各颜色分量值进行递减,直到所有颜色值都变成0(即黑色)来实现渐隐。
// 图象渐隐效果
// 参数:
// pWnd – 显示图象的窗口
// pPal – 调色板指针
// nDeta – 各颜色分量的减小量
// uTimeOut – 时间的变化量
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;
MSG msg;
while (! 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<nTotalColors; ++i)
{
if (PaletteColors[i].peRed > nDeta)
{
PaletteColors[i].peRed -= nDeta;
bRedZero = FALSE;
}
else if (PaletteColors[i].peRed > 1)
{
PaletteColors[i].peRed--;
bRedZero = FALSE;
}
else
bRedZero = TRUE;
if (PaletteColors[i].peGreen > nDeta)
{
PaletteColors[i].peGreen -= nDeta;
bGreenZero = FALSE;
}
else if (PaletteColors[i].peGreen > 1)
{
PaletteColors[i].peGreen--;
bGreenZero = FALSE;
}
else
bGreenZero = TRUE;
if (PaletteColors[i].peBlue > nDeta)
{
PaletteColors[i].peBlue -= nDeta;
bBlueZero = FALSE;
}
else if (PaletteColors[i].peBlue > 1)
{
PaletteColors[i].peBlue--;
bBlueZero = FALSE;
}
else
bBlueZero = TRUE;
}
// 如所有颜色分量都为0,则结束渐隐
bDone = bRedZero && bGreenZero && bBlueZero;
// 使系统改变调色板
pPal->AnimatePalette(0, nTotalColors, PaletteColors);
}
::TranslateMessage(&msg);
::DispatchMessage(&msg);
}
}
::ReleaseCapture();
pWnd->KillTimer(0x100);
// 恢复原始调色板
pPal->SetPaletteEntries(0, nTotalColors, PaletteColors0);
pPal->AnimatePalette(0, nTotalColors, PaletteColors0);
}
快乐鹦鹉
2004-09-30
打赏
举报
回复
定时修改文字的颜色
VC
++动态加载
文字
并淡入淡出实例
内容索引:
VC
/C++源码,界面编程,淡入淡出
VC
++动态加载
文字
并淡入淡出的方法实例,这种
效果
估计大家见得多了,但是它是用
VC
++
实现
的,打开程序后,窗口内的
文字
慢慢出现,再慢慢隐去,然后加载下一轮
文字
,就像是Flash那种
效果
差不多,窗体渐变
文字
,可以用作软件的“About”属性页。
VC
图像编程
--
VC
多媒体编程 -- Visual C++中基于多文档视窗模型的重叠图象拼接技术 摘要 图象拼接是在全景视频系统、地理信息系统等应用中经常遇到的一个问题,本文基于网格匹配的方法对边界部分有重叠的图象提出了一种行之有效的对准算法,并通过平滑因子对图象
实现
了无缝拼接。并应用文档视窗模型
实现
了该算法,并完成了位图文件的显示、存储等操作,具有一定的普遍意义。
C++/
VC
小技巧
【目 录】
1. 让程序只运行一次
2. 改变对话框的背景颜色
3. 让程序前端显示
4. “显示”链接LIB文件
5. 关闭其它应用程序
6. 系统托盘
7. 创建隐藏的对话框
8. 怎样使用高版本的函数和宏
9. 如何以动态的
效果
打开对话框
10.怎样以
渐隐
方式关闭对话框
11.动态改变光标
12.重写标题栏上的关闭按钮
13.重写F1帮助
14.如何
VC
多媒体编程
--
VC
多媒体编程 -- Visual C++中基于多文档视窗模型的重叠图象拼接技术 摘要 图象拼接是在全景视频系统、地理信息系统等应用中经常遇到的一个问题,本文基于网格匹配的方法对边界部分有重叠的图象提出了一种行之有效的对准算法,并通过平滑因子对图象
实现
了无缝拼接。并应用文档视窗模型
实现
了该算法,并完成了位图文件的显示、存储等操作,具有一定的普遍意义。
学习
VC
的心得
转载自: http://www.cnblogs.com/flyingleaf/articles/12677.html 【目 录】1. 让程序只运行一次2. 改变对话框的背景颜色3. 让程序前端显示4. “显示”链接LIB文件5. 关闭其它应用程序6. 系统托盘7. 创建隐藏的对话框8. 怎样使用高版本的函数和宏9. 如何以动态的
效果
打开对话框
图形处理/算法
19,468
社区成员
50,698
社区内容
发帖
与我相关
我的任务
图形处理/算法
VC/MFC 图形处理/算法
复制链接
扫一扫
分享
社区描述
VC/MFC 图形处理/算法
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章