| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2638 人关注过本帖
标题:关于使用SetROP2,采用异或的方法实现动画效果的问题求教-->SunShining转移 ...
只看楼主 加入收藏
rock_liuyu
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2006-6-23
收藏
 问题点数:0 回复次数:6 
关于使用SetROP2,采用异或的方法实现动画效果的问题求教-->SunShining转移

各位大侠好。
我使用MFC提供的SetROP2函数实现了在固定背景颜色下的物体移动的动画效果,但同时也遇到一个问题:当背景色不是纯色,例如背景为一幅图片时,我所要绘制的物体颜色就不能保持我在画笔中设置的颜色。
请问可以怎么样解决这一问题,或者有无其他的方法。谢谢!

搜索更多相关主题的帖子: SunShining 动画 效果 
2006-06-23 20:38
一笔苍穹
Rank: 1
等 级:新手上路
帖 子:640
专家分:0
注 册:2006-5-25
收藏
得分:0 
是的,在使用XOR异或操作向屏幕输出时会有上述问题,其实XOR只是一个简单的动画解决方案,在实际应用中建议还是使用脏矩形等更实用的方案实现动画。
2006-06-25 11:24
rock_liuyu
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2006-6-23
收藏
得分:0 
谢谢。
关于“脏矩形”的解决方法能否说得稍微详细一点,
或者哪里有这样的资料可否推荐一下,不胜感激!
急!!!
2006-06-26 19:53
一笔苍穹
Rank: 1
等 级:新手上路
帖 子:640
专家分:0
注 册:2006-5-25
收藏
得分:0 
脏矩形简单的说就是屏幕上哪个区域被改动了就更新那一块,被改动的那块就是“脏矩形”。比方说你的要求是在固定的背景上移动某个物体,那么好,你先将要画上物体的那小块背景保存到内存中,然后将要画的东东画上去,稍作延时将备份在内存中的区域恢复到屏幕上原来的位置上,此时背景被还原了,接下来循环以上的步骤,保存下一块要弄脏的区域,画上物体,延时还原……
由于每个操作间的时间很短,所以物体开始运动了。脏矩形的优点就是效率高,但实现起来比双缓冲技术稍复杂一些。
2006-06-26 22:17
rock_liuyu
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2006-6-23
收藏
得分:0 

谢谢指点。
因为我的软件中对物体移动的要求比较高,首先是每秒内可能发生位置移动的物体比较多(几十个),其次频率也比较快,即几乎不间断的每秒都要作这样的处理,不知斑竹推荐的这种方式效率有多高。
我所以原来采用双缓冲技术其实就是考虑到效率问题,因为使用SetRop2的异或处理方法不需要对整个图形区进行重绘,这样对整个系统的资源和CPU的占用都比较少。
我回去试一试,有不明白的再来请教。
再次表示感谢。

2006-06-27 12:40
rock_liuyu
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2006-6-23
收藏
得分:0 

对斑竹建议的这一方法下午试了一下,想请教:
如果在屏幕区几乎同一位置上有两个或多于两个的物体发生重叠,当要移动物体时,使用脏矩形法如何擦除物体?

2006-06-27 15:33
一笔苍穹
Rank: 1
等 级:新手上路
帖 子:640
专家分:0
注 册:2006-5-25
收藏
得分:0 
这就涉及到让路规避问题了,简单的说用递归的思路去处理就行了,设定一个优先级,优先级高的物体先在背景上做脏矩形,优先级低的在高的物体上做脏矩形,一个压一个,恢复时的顺序正好相反,先恢复优先级低的……
2006-06-27 18:51
快速回复:关于使用SetROP2,采用异或的方法实现动画效果的问题求教-->SunShinin ...
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.016704 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved