2009-02-16 51 views
0

所以我讀過StretchBlt可以通過取消nWidthSrc/Dest和nHeightSrc/Dest參數來水平和/或垂直鏡像圖像。我希望這個功能沒有StretchBlt的性能開銷。我嘗試了與BitBlt相同的技術,但沒有奏效。Win32 BitBlt - 水平鏡像

有什麼方法可以用像BitBlt一樣簡單的方式來鏡像圖像,而沒有StretchBlt的矯枉過正?或者,如果源和目標大小相同,StretchBlt不會影響性能?

回答

2

BitBlt將只對所討論的單個像素進行數學運算(或者xor等),它不會以任何方式調整圖像的大小,這正是StretchBlt是和StretchBlt(與任何其他圖形大小調整操作相比)是非常快速的大多數情況下,它可以使用顯卡來加速其性能。

0

要鏡像圖像,您只需以相反的順序循環顯示像素。這樣,如果你想反映的水平,你只需要做到以下幾點:

  1. 擴大圖像畫布大小
  2. 開始在圖像的底部翻番和工作,你的方式寫出來的像素到從上到下鏡像區域。
  3. 從左至右做第3步。

我不知道你在用什麼語言,但其中的大多數允許你使用GDI來操縱像素或位。

0

沒辦法,你將要更高效,StretchBlt,除非你知道有關圖像一些額外的信息(例如,有一個邊界所以你不必翻轉某些像素