GDI中的bitblt函数的速度非常快,但是他对于32位带alpha通道无能为力,GDI中唯一可以显示32位的函数是Alphablend函数,而这个函数要正确显示必须保证其数据是PARGB格式的,在数字图像处理时,我们的数据一般是ARGB的,所以要正确显示,还要一个乘积的过程,这样速度就不够快,GDI+中的Drawimage函数可以很好的实现绘制32位图像,但是我实测这个函数要很慢很慢啊,我想问下GDI+中有那些参数的设置可以提高这个函数的性能,或者有可替代的函数吗?

解决方案 »

  1.   

    DrawImage并不慢.
    GDI+中也没有什么可以使DrawImage加速的.
      

  2.   

    DrawImage方法不会慢啊。不知道你怎么测的。
      

  3.   

    //DrawImage方法不会慢啊。不知道你怎么测的。DrawImage的速度在你们绘制一副图像的时候你是不会觉得慢,比如1024*768的图像,也就那么50ms 左右,但是一旦你是在连续的绘制中,就能感觉这个速度是如何的卡。和bitblt相比,这个函数慢很多。//看看c#中的双缓冲技术吧 
    你呢,我觉得对于图像还不怎么了解,双缓冲是用来避免闪烁的,和提高绘图速度是两个方面的问题。我搜了一下,关于这个问题,很多人都提过,比如这个:
    http://hi.baidu.com/shangxing214/blog/item/08825da5ca2bfcf09052eebe.htmlhttp://bbs.ngacn.cc/read.php?tid=2654679基本上是没有办法的,cachedbitmap虽然能提高速度,但是不能用来显示缩放,还有很多其他限制。
      

  4.   

    我用GDI+做了那么多动画,没出现你所谓的"慢"的问题.Drawimage画一张图跟画100张图有什么区别?
    可能还是你的代码有问题.
      

  5.   

    当然,如果你要求GDI+能有DX的绘图速度,那是不可能的.