我以前用StretchBlt函数缩小图片时会出现很大的失真,这个函数放大图片还行。请问有何方法正确缩小图片??

解决方案 »

  1.   

    除非是用物理光学来缩放图形,否则只要缩小图片就意味着有数据的丢失,因此找不到所谓正确缩小图片的方法,只有更合适的拟合算法。StretchBlt的缩放效果已经比较专业了。
      

  2.   

    SetWindowExtEx(hdc,  width,height, NULL);
    SetViewportExtEx(hdc, width>>1,height>>1, NULL);
    来试试
      

  3.   

    StretchBlt之前设置模式,效果能好一点
    ::SetStretchBltMode(hDc,COLORONCOLOR);第二个参数可以参考msdn,一般缩小就用COLORONCOLORBLACKONWHITE 
    Performs a Boolean AND operation using the color values for the eliminated and existing pixels. If the bitmap is a monochrome bitmap, this mode preserves black pixels at the expense of white pixels. COLORONCOLOR
    Deletes the pixels. This mode deletes all eliminated lines of pixels without trying to preserve their information. HALFTONE 
    Maps pixels from the source rectangle into blocks of pixels in the destination rectangle. The average color over the destination block of pixels approximates the color of the source pixels. 
    After setting the HALFTONE stretching mode, an application must call the SetBrushOrgEx function to set the brush origin. If it fails to do so, brush misalignment occurs.This option is not supported on Windows 95/98/Me.
     
    STRETCH_ANDSCANS 
    Same as BLACKONWHITE. STRETCH_DELETESCANS 
    Same as COLORONCOLOR. STRETCH_HALFTONE 
    Same as HALFTONE. STRETCH_ORSCANS 
    Same as WHITEONBLACK. WHITEONBLACK 
    Performs a Boolean OR operation using the color values for the eliminated and existing pixels. If the bitmap is a monochrome bitmap, this mode preserves white pixels at the expense of black pixels. 
      

  4.   

    使用
    SetStretchBltMode(hdc, HALFTONE);
    来看看
      

  5.   

    up====CSDN 小助手 V2.5 2005年11月05日发布====
    CSDN小助手是一款脱离浏览器也可以访问Csdn论坛的软件
    界面:http://blog.csdn.net/Qqwwee_Com/archive/2005/11/05/523395.aspx
    下载:http://szlawbook.com/csdnv2