DrawImage绘图速度太慢了!

时间:2022-12-14 19:51:10
我显示多张png图片,结果速度相当的慢了,我做了个测试:
CString str = "E:\\个人代码\\HumanBody\\bin\\male.png";
Image * image;
image = new Image(str.AllocSysString());
for(int i = 0; i < 10; i++)
{
g.DrawImage(image, 100, 100, 200, 200); 
}
就10幅图都慢的要死,如何解决这个问题呢?如果不用drawimage,速度立马恢复,怎么回事啊??
如果真是drawimage的问题,该如何解决呢?

12 个解决方案

#1


BitBlt

#2


BitBlt

#3


你这样每次都加载不慢才怪,上面的回复的方法没到点子上面。 你缓存一下到成员变量里面,如果需要优化你可以考虑只绘制看得见的部分。

#4


楼上有道理

#5


楼上有道理

#6


楼上有道理

#7


支持

#8


支持

#9


引用 3 楼 wlwlxj 的回复:
你这样每次都加载不慢才怪,上面的回复的方法没到点子上面。 你缓存一下到成员变量里面,如果需要优化你可以考虑只绘制看得见的部分。

如果引用文件名字,不每次加载可以吗?
另外一改版大家都发两个回复了,呵呵~~

#10


GDI+ 的 DrawImage尽管是.NET实现的,但它并不慢, 你得检查你的做法.

#11


该回复于2009-07-17 18:58:38被版主删除

#12


我也遇到这个问题了,确实是很慢的,比起BitBlt差太多了,但是BitBlt又不能实现从内存图像到内存图像的拷贝(似乎是基于屏幕显示拷贝的),楼上的观点不知道是依据什么说的,在楼主的代码中只要注释或启用循环体内的代码就能看出DrawImage方法的性能差异了,不论其他地方的效率是否优化,主要影响性能的地方确是在这里的。

#1


BitBlt

#2


BitBlt

#3


你这样每次都加载不慢才怪,上面的回复的方法没到点子上面。 你缓存一下到成员变量里面,如果需要优化你可以考虑只绘制看得见的部分。

#4


楼上有道理

#5


楼上有道理

#6


楼上有道理

#7


支持

#8


支持

#9


引用 3 楼 wlwlxj 的回复:
你这样每次都加载不慢才怪,上面的回复的方法没到点子上面。 你缓存一下到成员变量里面,如果需要优化你可以考虑只绘制看得见的部分。

如果引用文件名字,不每次加载可以吗?
另外一改版大家都发两个回复了,呵呵~~

#10


GDI+ 的 DrawImage尽管是.NET实现的,但它并不慢, 你得检查你的做法.

#11


该回复于2009-07-17 18:58:38被版主删除

#12


我也遇到这个问题了,确实是很慢的,比起BitBlt差太多了,但是BitBlt又不能实现从内存图像到内存图像的拷贝(似乎是基于屏幕显示拷贝的),楼上的观点不知道是依据什么说的,在楼主的代码中只要注释或启用循环体内的代码就能看出DrawImage方法的性能差异了,不论其他地方的效率是否优化,主要影响性能的地方确是在这里的。