我用GDI+绘制透明图片时发现这个问题:
下面是我绘图的函数:
graphics->DrawImage(bitmap,src_rect,bmp_rect.X,bmp_rect.Y,
                    real_rect.Width,real_rect.Height,UnitPixel,&imageAtt);
当我没有调整imageAtt的属性时,CPU占用2%至5%;
当我调整imageAtt的属性改变图片的透明度时,CPU占用达到40%至50%;
这是什么原因?

解决方案 »

  1.   

    不只是和DrawImage有关吧  应该和你的其他处理有关系
      

  2.   

    直接操作内存吧
    以前用GDI+时也遇到过类似的问题
      

  3.   

    别用GDI+了。我只能这么说。
    GDI+虽然抽象层次更高,更易用,但是效率不是一般的低。特别是使用了ImageAttribute作为参数进行绘制的时候,那速度简直惨不忍睹。一个简单的全局Alpha混合,使用GDI+设置ImageAttribute的ColorMatrix之后,速度比GDI的AlphaBlend慢差不多500倍。
      

  4.   

    不用GDI+,那用什么呢?GDI又不能处理透明....
    而DirectX还得从头学起饿..........
      

  5.   


    GDI也可以处理透明的,不过不是很完善而已。
    GDI提供AlphaBlend函数,可以实现对图像的全局半透明混合,以及32位带Alpha通道的BMP图像的绘制。
    如果只是纯透明的话更简单,TransparentBlt即可。