graphics.DrawImage 绘图太慢了 应如何办

清水迎朝阳
博客专家认证
2009-10-21 10:03:53

我用 Image 打开一系列.tif图像

然后调用 graphic.DrawImage()依次在屏幕上显示出来

虽然能正常显示

但是绘图时太慢了 ,经常卡住

请问如何处理,原因为何 请给出实例代码 谢谢
...全文
1434 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
百事烟 2009-10-21
  • 打赏
  • 举报
回复
原比例显示很快的,用什么都一样,最终都是调用的GDI函数,当然直接用GDI最好
如果显示有缩放的话,用什么显示都会很慢,因中间有个插值算法,
chenyu2202863 2009-10-21
  • 打赏
  • 举报
回复
你觉得此函数不好,你可以用GDI+来加载图片,然后转成HBITMAP,再用GDI来输出
news007 2009-10-21
  • 打赏
  • 举报
回复
GDI+在性能上整体是要比GDI慢一些的

--------------------------------
界面与逻辑彻底分离的利器:DirectUI
界面开发网站:www.uipower.com
我是苦力 2009-10-21
  • 打赏
  • 举报
回复
如果你是老是不断绘制那么几个同样的图片的话.
那么把这些图片先在内存上绘制成bmp(大小按要求),等再绘制到wnd的时候就绘制这些在内存上的bmp.
快N倍. 主要是不会再有缩放,不会有解码tif什么的.
laviewpbt 2009-10-21
  • 打赏
  • 举报
回复
当然,GDI+还有一个CachedBtimap类,可以加快图像的绘制,你可以去了解一下。这个会多占用一些内存。
laviewpbt 2009-10-21
  • 打赏
  • 举报
回复
GDI+在性能上整体是要比GDI慢一些的,关于绘图函数,GDI+中之只有一个DrawImage的多种重载函数,而在GDI中,有bitblt,strechblt等等,一般情况下,如果你要绘制的图像不是32位的图像,可以下转换为GDI对象,然后用bitblt绘制,如果是32位的图像,用DrawImage还是比较快的。
百事烟 2009-10-21
  • 打赏
  • 举报
回复
如果不缩放的话用GDI和GDI+给图几乎没区别,一样快,直接用GDI+输出就很好

有缩放的话直接用GDI和GDI+都会很慢,得想别的办法,
清水迎朝阳 2009-10-21
  • 打赏
  • 举报
回复
请问 如何用 GDI+来加载图片,然后转成HBITMAP,再用GDI来输出

能不能给出代码实例说明

我是第一次接触图像方面的知识 很多都不知道

15,979

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 界面
社区管理员
  • 界面
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧