Visual C++數字圖像處理基礎 之 BitBlt和StretchBlt

    顯示圖像的時候有兩個函數是必須要知道的,就是BitBlt和StretchBlt。

    這兩個函數的定義如下:   

      BitBlt

  函數功能:該函數對指定的源設備環境區域中的像素進行位塊(bit_block)轉換,以傳送到目標設備環境。
  函數原型:BOOL BitBlt(HDC hdcDest,int nXDest,int nYDest,int nWidth,int nHeight,HDC hdcSrc,int nXSrc,int nYSrc,DWORD dwRop);
  參數:
  hdcDest:指向目標設備環境的句柄。
  nXDest:指定目標矩形區域左上角的X軸邏輯座標。
  nYDest:指定目標矩形區域左上角的Y軸邏輯座標。
  nWidth:指定源和目標矩形區域的邏輯寬度。
  nHeight:指定源和目標矩形區域的邏輯高度。
  hdcSrc:指向源設備環境的句柄。
  nXSrc:指定源矩形區域左上角的X軸邏輯座標。
  nYSrc:指定源矩形區域左上角的Y軸邏輯座標。
  dwRop:指定光柵操作代碼。這些代碼將定義源矩形區域的顏色數據,如何與目標矩形區域的顏色數據組合以完成最後的顏色。
  下面列出了一些常見的光柵操作代碼:
  BLACKNESS:表示使用與物理調色板的索引0相關的色彩來填充目標矩形區域,(對缺省的物理調色板而言,該顏色爲黑色)。
  DSTINVERT:表示使目標矩形區域顏色取反。
  MERGECOPY:表示使用布爾型的AND(與)操作符將源矩形區域的顏色與特定模式組合一起。
  MERGEPAINT:通過使用布爾型的OR(或)操作符將反向的源矩形區域的顏色與目標矩形區域的顏色合併。
  NOTSRCCOPY:將源矩形區域顏色取反,於拷貝到目標矩形區域。
  NOTSRCERASE:使用布爾類型的OR(或)操作符組合源和目標矩形區域的顏色值,然後將合成的顏色取反。
  PATCOPY:將特定的模式拷貝到目標位圖上。
  PATPAINT:通過使用布爾OR(或)操作符將源矩形區域取反後的顏色值與特定模式的顏色合併。然後使用OR(或)操作符將該操作的結果與目標矩形區域內的顏色合併。
  PATINVERT:通過使用XOR(異或)操作符將源和目標矩形區域內的顏色合併。
  SRCAND:通過使用AND(與)操作符來將源和目標矩形區域內的顏色合併。
  SRCCOPY:將源矩形區域直接拷貝到目標矩形區域。
  SRCERASE:通過使用AND(與)操作符將目標矩形區域顏色取反後與源矩形區域的顏色值合併。
  SRCINVERT:通過使用布爾型的XOR(異或)操作符將源和目標矩形區域的顏色合併。
  SRCPAINT:通過使用布爾型的OR(或)操作符將源和目標矩形區域的顏色合併。
  WHITENESS:使用與物理調色板中索引1有關的顏色填充目標矩形區域。(對於缺省物理調色板來說,這個顏色就是白色)。
  返回值:如果函數成功,那麼返回值非零;如果函數失敗,則返回值爲零。
  Windows NT:若想獲取更多錯誤信息,請調用GetLastError函數。
  備註:如果在源設備環境中可以實行旋轉或剪切變換,那麼函數BitBlt返回一個錯誤。如果存在其他變換(並且目標設備環境中匹配變換無效),那麼目標設備環境中的矩形區域將在需要時進行拉伸、壓縮或旋轉。
  如果源和目標設備環境的顏色格式不匹配,那麼BitBlt函數將源場景的顏色格式轉換成能與目標格式匹配的格式。當正在記錄一個增強型圖元文件時,如果源設備環境標識爲一個增強型圖元文件設備環境,那麼會出現錯誤。如果源和目標設備環境代表不同的設備,那麼BitBlt函數返回錯誤。

  Windows CE:在Windows CE 1.0版中,參數dwRop只可以指定爲下列值:SRCCOPY、SRCAND、SRCPAINT、SRCINVERT。在Windows CE 2.0版中,參數dwRop可以是任何光柵操作代碼值。

       

      StretchBlt

  函數功能:函數從源矩形中複製一個位圖到目標矩形,必要時按目前目標設備設置的模式進行圖像的拉伸或壓縮。
  函數原型:BOOL StretchBlt(HDC hdcDest, int nXOriginDest, int nYOriginDest, int nWidthDest, int nHeighDest, HDC hdcSrc, int nXOriginSrc, int nYOriginSrc, int nWidthSrc, int nHeightSrc, DWORD dwRop);
  參數:
  hdcDest:指向目標設備環境的句柄。
  nXOriginDest:指定目標矩形左上角的X軸座標,按邏輯單位表示座標。
  nYOriginDest:指定目標矩形左上角的Y軸座標,按邏輯單位表示座標。
  nWidthDest:指定目標矩形的寬度,按邏輯單位表示寬度。
  nHeightDest:指定目標矩形的高度,按邏輯單位表示高茺。
  hdcSrc:指向源設備環境的句柄。
  nXOriginSrc:指向源矩形區域左上角的X軸座標,按邏輯單位表示座標。
  nYOriginSrc:指向源矩形區域左上角的Y軸座標,按邏輯單位表示座標。
  nWidthSrc:指定源矩形的寬度,按邏輯單位表示寬度。
  nHeightSrc:指定源矩形的高度,按邏輯單位表示高度。
  dwRop:指定要進行的光柵操作。光柵操作碼定義了系統如何在輸出操作中組合顏色,這些操作包括刷子、源位圖和目標位圖等對象。參考BitBlt可瞭解常用的光柵操作碼列表。
  返回值:如果函數執行成功,那麼返回值爲非零,如果函數執行失敗,那麼返回值爲零。Windows NT:若想獲得更多的錯誤信息,請調用GetLastError函數。

發佈了22 篇原創文章 · 獲贊 3 · 訪問量 9萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章