如何在屏幕上画一个圆心在正弦曲线上运动的圆?我用gdi弄的效果很差。
null 问题点数:50、回复次数:14Top
1 楼xghome(东楼)回复于 2002-09-12 22:12:02 得分 10
是不是暴闪?就知道会这样,准备一个后台DC,和屏幕等大,当然,必要的CBitmap也要创建出来,然后SelectObject进去,所有绘图工作在这个DC上完成,然后,每隔55毫秒,向屏幕DC上BitBlt一次就OK了Top
2 楼rockaka(待时如死,乘时如失)回复于 2002-09-12 22:33:35 得分 0
good!Top
3 楼JennyVenus()回复于 2002-09-12 22:37:11 得分 0
顺便问一个问题,如何得到屏幕的位图Top
4 楼zjlsct()回复于 2002-09-13 00:50:04 得分 0
CBitmap?
MFC?
我用APITop
5 楼Alain_Delone(阿龙)回复于 2002-09-13 04:38:21 得分 10
屏幕位图可以直接通过STRETCHBLT 或BITBLT写入一个与DIB文件相关联的HDCMEN从而保存下来
那个画圆能不能用矩形来控制位置,然后不断调用OFFSETRECT(),重画时只重画矩形区域?不过不知道你要画的圆多大Top
6 楼jameslee005(JamesLee)回复于 2002-09-13 06:32:55 得分 0
我是新手,不大懂:P
由谁能给个完整的程序?
谢谢Top
7 楼zjlsct()回复于 2002-09-13 12:36:13 得分 0
我的思路是用SetTimer向窗口过程发送一个WM_TIMER消息,窗口过程接收到以后调用InvalidateRect,然后重绘圆,圆的圆心位置用一个全局变量自加来确定。Top
8 楼zi_song(刚开始)回复于 2002-09-13 12:48:49 得分 0
关注!
同意jameslee005(JamesLee) 。
=================
楼主写出来了吗?
Top
9 楼ttapi(我爱虫虫)回复于 2002-09-13 12:48:55 得分 10
InvalidRect 画的当然闪了,你应该用 XOR 方式重画一次然后再画新的
Top
10 楼Alain_Delone(阿龙)回复于 2002-09-13 17:33:47 得分 0
不过通常用内存来擦除,并重绘是解决屏幕闪烁的简单方法,XOR好象有颜色的问题,不过效果肯定是最好的Top
11 楼liangshulsh(天狼)回复于 2002-09-13 17:57:01 得分 0
你可以用OpenGL提供的函数库Top
12 楼youngwhz(sunbird)回复于 2002-09-13 18:04:20 得分 10
老兄,怎么还用GDI,那效率太低了
改用DirectX吧,直接操作显存
如果你的显卡支持
可用OverLay,绝对达到游戏级的动画效果Top
13 楼yheysj(vc_help)回复于 2002-09-13 18:08:59 得分 10
在内存中华图!不久行了!Top
14 楼zjlsct()回复于 2002-09-13 18:44:14 得分 0
那请各位贴上示范代码,好吗?
我希望能看到用win32 api写的Top




