大致的方法和RGB的縮放一致,注意ddraw
yuv影片顯示時,由於點選滑鼠左鍵對影象進行放大,會造成ddraw的表面的高度和寬度等發生變化,這樣我們縮放時,要及時跟新ddraw表面,在yuv縮放顯示時,由於我有好幾個類之間互動資料,造成2個物件訪問同一個類的成員(座標)的情況,獲取不到座標值。這個問題可以採用設計模式裡面的單態
設計模式或使用GetParent()獲取父類對話方塊的物件解決。
縮放公式如下:
imgRect :
根據放大的倍數和捲軸的位置,就算出原始影象的哪部分畫素顯示在螢幕上。
主要是計算出這個關係;
設捲軸的水平位置為sx,垂直位置為sy;
螢幕的size為:cx,cy
放大倍數為m_zoom;
那麼此時:對應的原始畫素的座標為:
影象的畫素size=i_width*i_height;
那麼此時的區域性原始size為(RGB縮放):
imgRect.left=(i_width-cx/m_zoom)*sx/Max_ScrollValue;
imgRect.top=(i_height-cy/m_zoom)*sy/Max_ScrollValue;
imgRect.width=cx/m_zoom;
imgRect.height=cy/m_zoom;
大致的方法和RGB的縮放一致,注意ddraw
yuv影片顯示時,由於點選滑鼠左鍵對影象進行放大,會造成ddraw的表面的高度和寬度等發生變化,這樣我們縮放時,要及時跟新ddraw表面,在yuv縮放顯示時,由於我有好幾個類之間互動資料,造成2個物件訪問同一個類的成員(座標)的情況,獲取不到座標值。這個問題可以採用設計模式裡面的單態
設計模式或使用GetParent()獲取父類對話方塊的物件解決。
縮放公式如下:
imgRect :
根據放大的倍數和捲軸的位置,就算出原始影象的哪部分畫素顯示在螢幕上。
主要是計算出這個關係;
設捲軸的水平位置為sx,垂直位置為sy;
螢幕的size為:cx,cy
放大倍數為m_zoom;
那麼此時:對應的原始畫素的座標為:
影象的畫素size=i_width*i_height;
那麼此時的區域性原始size為(RGB縮放):
imgRect.left=(i_width-cx/m_zoom)*sx/Max_ScrollValue;
imgRect.top=(i_height-cy/m_zoom)*sy/Max_ScrollValue;
imgRect.width=cx/m_zoom;
imgRect.height=cy/m_zoom;