关于VC++显示图片效率的问题,很纠结

来源:百度知道 编辑:UC知道 时间:2024/05/23 17:02:28
(VS2005,VB6)我要实现的功能是,有10个按钮,10个图片框,100张图片,当点击按钮1时,10个图片框分别显示图片1~图片10,以此类推。我用CImage显示图片。首先获得按钮的序号m(用message_range实现),然后用一个循环(n=1 to 10),循环内部{首先用m和n生成图片所在路径的string,然后cimage::load(string),然后获得图片框n的句柄和DC,然后用Cimage::stretchblt将图片缩放在图片框里)}这个思路应该没错,可是在实际执行的时候,点击按钮1,从图片框1的绘画到图片框10的绘画经历了一个肉眼可见的过程,也就是说没有预想中那样一下就画完,RELEASE里的.exe也是(我机器配置没问题)。而我在VB里实现这个功能时就很快。怎么优化一下这个过程,让图片框1和10“几乎同时绘画完成”?要不做出来的软件太难看了……(我边学边做的,请指教谢谢)
回复 gift925: 确实是用一个循环:。。。。然后用一个循环(n=1 to 10),循环内部{。。}。。。我只是感觉vc不应该比vb慢啊,还是我自己的错觉啊?
回复 何处淬吴钩:还真不明白,我是原来看过一点,然后边学边做。。其实是边做边学。。。关于内存绘图。。。我再看看吧

不要用图片框,或者用一个图片框,内存DC绘图,再把内存dc直接输出到对画框窗口中。不用图片框会更容易实现,在对话框里绘图就可以了,否则你要去图片框里绘图。

你的问题是因为屏幕绘图需要一定过程,所以要在内存中把一屏的图绘好再输出到屏幕,这样就避免了你所描述的问题。

不知你是否明白?你可以搜一些内存绘图的资料。

这么奇怪啊。。。。。。您的情况就算多线程也没用,还不如for循环快呢。还是再仔细检查下程序逻辑吧。