图片转场效果时碰到的问题

Sandycs 2013-08-18 03:55:33
我在一个窗口上拉了4个CSTATIC
然后挨个在窗口上实现转场效果

转场是这么实现的
1 设置一个20ms的timer
2 每次出发timer就用bitblt来处理图片
但是我发现,如果这几个窗口不重叠时,转场效果很OK,窗口重叠的话,转场效果就会出现闪烁的现象
具体表现就是比如A盖在B之上,会出现A和B转场时,你能看到B的情况(不应该看到B,因为它被盖住了一大部分)

我本来想,会出现闪烁可能跟我不管怎样都把整个CSTATIC刷新有关系,毕竟A盖住了B,B要刷新的地方并不多
但是B和A非重叠的部分很难去切割以及计算

我该怎么办呢?
...全文
306 25 打赏 收藏 转发到动态 举报
写回复
用AI写文章
25 条回复
切换为时间正序
请发表友善的回复…
发表回复
schlafenhamster 2013-09-16
  • 打赏
  • 举报
回复
“这“4个CSTATIC”怎么 专场? 只看到 4个 都在 变, 是不是 一个一个 变 ?
Sandycs 2013-09-16
  • 打赏
  • 举报
回复
引用 21 楼 fishion 的回复:
主窗口设置WS_CLIPCHILDREN和WS_CLIPSIBLINGS属性
试过了,没用 并不是主窗口的PAINT事件引起的问题 而是bitblt是无视窗口的,
Sandycs 2013-08-26
  • 打赏
  • 举报
回复
引用 21 楼 fishion 的回复:
主窗口设置WS_CLIPCHILDREN和WS_CLIPSIBLINGS属性
我擦。高手 我试试
fishion 2013-08-23
  • 打赏
  • 举报
回复
主窗口设置WS_CLIPCHILDREN和WS_CLIPSIBLINGS属性
schlafenhamster 2013-08-22
  • 打赏
  • 举报
回复
详细说说 “转场效果” 到底 是 什么 效果 ?
schlafenhamster 2013-08-22
  • 打赏
  • 举报
回复
这“4个CSTATIC”怎么 专场?
Sandycs 2013-08-22
  • 打赏
  • 举报
回复
引用 18 楼 schlafenhamster 的回复:
详细说说 “转场效果” 到底 是 什么 效果 ?
你好 有很多种 比如从左到右把推入图片 比如从上到下推入图片 就是图片切换之间的效果,类似于PPT中那种淡入淡出啊、左进右出啊等等
Sandycs 2013-08-21
  • 打赏
  • 举报
回复
引用 14 楼 schlafenhamster 的回复:
“打开图片”出错是因为用了: //imagename.Format(("D:\\我的桌面\\图片特效\\图片特效2010-8-12\\Debug\\%d.jpg"),i); 用: imagename.Format((".\\Debug\\%d.jpg"),i);
不好意思我为了方便操作都把路径暂时先写死
Sandycs 2013-08-21
  • 打赏
  • 举报
回复
引用 15 楼 schlafenhamster 的回复:
所谓转场时,图片都是马赛克 ???
马赛克只是其中一种转场效果 我把它锁定在马赛克。 在300多行的地方有一句语句:
m_picObject->SetPlayList(m_Align,7,30);
请改成
m_picObject->SetPlayList(m_Align,44,30);
即可实现随机转场效果显示
schlafenhamster 2013-08-20
  • 打赏
  • 举报
回复
所谓转场时,图片都是马赛克 ???
schlafenhamster 2013-08-20
  • 打赏
  • 举报
回复
“打开图片”出错是因为用了: //imagename.Format(("D:\\我的桌面\\图片特效\\图片特效2010-8-12\\Debug\\%d.jpg"),i); 用: imagename.Format((".\\Debug\\%d.jpg"),i);
schlafenhamster 2013-08-20
  • 打赏
  • 举报
回复
“打开图片”出现: if (!m_pIPicture) { ASSERT(0); return FALSE; }
Sandycs 2013-08-20
  • 打赏
  • 举报
回复
引用 8 楼 schlafenhamster 的回复:
“转场效果” 不太明白 ?
详细请运行下代码,费心了
Sandycs 2013-08-20
  • 打赏
  • 举报
回复
引用 9 楼 zhoujk 的回复:
如果只是每个POX播放图片或动画,写点代码,让他们独立运行就OK。如果需要同步,就加同步代码,为什么要让他们互相COPY?
没有互相COPY啊 BITBLT的作用是做转场效果,比如百叶窗,比如左边进入等等 转场效果实现的时候是不分窗口的,这是比较头疼的地方。
Sandycs 2013-08-20
  • 打赏
  • 举报
回复
引用 7 楼 schlafenhamster 的回复:
你可以上传到 你的 资源。
您好,地址请见http://download.csdn.net/detail/sandycs/5977975 去掉了sln和一个sdf,所以需要重新创建一个解决方案 版本VS2010
schlafenhamster 2013-08-19
  • 打赏
  • 举报
回复
你可以上传到 你的 资源。
zhoujk 2013-08-19
  • 打赏
  • 举报
回复
如果只是每个POX播放图片或动画,写点代码,让他们独立运行就OK。如果需要同步,就加同步代码,为什么要让他们互相COPY?
schlafenhamster 2013-08-19
  • 打赏
  • 举报
回复
“转场效果” 不太明白 ?
Sandycs 2013-08-18
  • 打赏
  • 举报
回复
CSDN能不能上附件啊 我想把整个工程贴上来。很简单的工程,但是转场代码很长。
Sandycs 2013-08-18
  • 打赏
  • 举报
回复
引用 3 楼 schlafenhamster 的回复:
给点 图 看看
您好,请见4楼
加载更多回复(4)

19,468

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 图形处理/算法
社区管理员
  • 图形处理/算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧