在view中做 图像缩放, 但是用StretchBlt后resize窗口大小的时候会出现图像跳动现象, 结果发现是因为在窗口大小变化时, 重新计算可见区域图像的坐标时由浮点数取整导致了图像的跳动, 请教高手如何解决这样的问题??急!!!

解决方案 »

  1.   

    SetStretchBltMode(hDC, HALFTONE);这个效果最好
      

  2.   

    goodboyws(深夜不眠者),
    是 图像的坐标由于浮点数取整导致的跳动现象,不是效果的问题
      

  3.   

    我知道我理解错了,但是还是没明白,重新计算可见区域图像的坐标是怎么做的,为什么要resize,你是指图像来回抖么,如果你在OnSize里做这类事情,好像没有必要Resize
      

  4.   

    是这样的当前可见区域(客户区+加上滚动条位置)为
    20,20,100,100
    如过缩放系数为10.0那么对应的图像范围应该是
    2,2,10,10
    StretchBlt(DestDC,20,20,100,100,hSrcDC,2,2,10,10,SRCCOPY);就没什么问题如果缩放系数为3.3之类的那么就会出现如下问题
    实际需要显示的图像范围为:
    20/3.3,20/3.3,100/3.3,100/3.3 之后得出的
    值就会随着窗口大小的变化不断的跳跃
    我想知道如何能够避免此类情况的发生??谢谢
      

  5.   

    好像你的意思是,你缩放后调用MoveWindow,MoveWindow产生OnSize,OnSize里面又会缩放
    可以在缩放操作中算出窗口大小后直接调用MoveWindow, 由MoveWindow产生的OnPaint去StretchBlt.
      

  6.   

    MoveWindow最后一个参数可以为FALSE,指定为不重画