我看过关于双缓存技术的文章,不过好像没有图片放缩功能的。我的问题是,如何在内存里将位图放缩,然后再用BitBlt显示,以免闪烁。而且当大量这个放缩后的位图时,不可能每次都要进行放缩操作,太浪费资源和影响效率了,而且图片也不会总刚好符合大小吧?

解决方案 »

  1.   

    楼上的stretchBlt不知是否符合你的要求,因为这个函数在缩放的时候是损失像素。
      

  2.   

    就是在内存里通过StretchBlt();进行缩放
    否则就要用专门的图形库
      

  3.   

    我用gdi+ 内存bmp/jpg 缩图. 放大没试过. 要搞个Istream 然后绑一个GlobalAlloc(GMEM_M​OVEABLE)
      

  4.   

    我就是说用这个stretchBlt会浪费资源。比如我要对一个位图翻转,再显示,而且不止一次显示。那怎么办,这个函数不是将内存里的位图取出来,在显示时进行的缩放吗?
      

  5.   

    可以看看cximage,里面有相应的现成函数可以调用
      

  6.   


    openCV 和gdi+ 都可以
      

  7.   

    你这个需求最好用9楼提到的OpenCV
      

  8.   

    使用SetStretchBltMode和StretchDIBits函数就可以了。
    SetStretchBltMode 控制缩放的模式,StretchDIBits控制缩放的比例
      

  9.   

    直接对内存中的RGB值进行放缩还是挺快的,当然你如果要求比较高果估计比较慢,你去查查二次线性算法速度和质量都可以,三次卷积算法比较慢了图像质量高,如果图像放缩的倍数不大,二次线性算法就可以了