使用gdi+实现桌面歌词的效率问题

来源:百度知道 编辑:UC知道 时间:2024/05/30 05:11:00
我想实现一个像酷我桌面歌词的软件,用的是gdi+,因为对话框不够大,歌词显示不完的时候,就需要歌词不断向左移动,将后面的显示出来,我的想法是设置一个定时器,如果歌词的长度大于对话框的长度,就按照时间和歌词长度的比例不断的向左慢慢移动,因为想要比较平滑的效果,所以定时器的时间100ms,即100ms重绘一次。效果是实现了,但是CPU的占用率很高,达到40%以上,但是我看酷我的程序根本不超过10%,我想请大家给我出出主意,看有没有什么别的方法,可以实现这个效果,而且可以使cpu的占用率降低。是不是我的思路有欠妥的地方呢?

KUGOO不是用GDIPLUS,GDI+功能是很多而且是XP自带的速度还可以还能实现FLASH的全部绘图功能但是不知道他们为什么不是用的GDI+微软的算法应该很快吧没试过KUGOO的蛮占CPU的,还有你绘图方式错了先在内存把图片数据弄好在一次性搞不要搞很多步狂占CPU我没试过GDI+,光GDI我弄一副200X200的连续BMP图算法错了也是30-40我的是Core2双核2.0+2G,算法很重要我也学了GDI+但是还没机会用上我现在在研究动态调试汇编~~~只能提醒你这么多了

使用gdi+有点小题大作了,使用VC窗口重绘技术CPU使用率应该是最小的。
我试过20ms重绘,很流畅,当前主流CPU使用率在5%左右。

应该是你的代码效率的问题

我以前也做过那个,不过当时只是为了研究,所以只实现了在屏幕中输出滚动的歌词,我也是100ms刷新一次,不过我记得程序运行的时候几乎没占什么CPU,我的很简单就是建个DC然后不断的输入出歌词.

单单重绘最小的矩形,不要重绘整个窗口

无论你使用的GDI+还是GDI,要想高效的绘制,代码都是需要优化的。比如,一般窗口需要重绘时,并不是全部的窗口都需要重绘,而往往仅仅是窗口的一部分需要重绘,所以,你应该判断裁剪区的矩形,仅对矩形内的窗口进行绘制。另外,还可以先把绘制内容画到一个位图中,然后一次性将该位图贴上去,这样可以很大程度上减少闪烁。还有,如果想降低CPU使用率,应当考虑采用多线程。