StretchBlt、SetSTretchBltMode

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、nYOriginDest:指定目標矩形左上角的X軸和Y軸座標,按邏輯單位表示。

nWidthDest、nHeightDest:指定目標矩形的寬度和高度,按邏輯單位表示。

hdcSrc:指向源設備環境的句柄。

nXOriginSrc、nYOriginSrc:指向源矩形區域左上角的X軸和Y軸座標,按邏輯單位表示。

nWidthSrc、nHeightSrc:指定源矩形的寬度和高度,按邏輯單位表示。

dwRop:指定要進行的光柵操作。光柵操作碼定義了系統如何在輸出操作中組合顏色,這些操作包括畫刷、源位圖和目標位圖等對象。參考 BitBlt 可瞭解常用的光柵操作碼列表。

在Windows CE 1.0和1.01版中,參數dwRop只支持SRCCOPY 和 SRCINVERT 

返回值:

如果函數執行成功,那麼返回值爲非零,如果函數執行失敗,那麼返回值爲零。若想獲得更多的錯誤信息,請調用GetLastError函數。

說明:

   StretchBlt函數在內存中對源位圖進行擴展或壓縮,然後將結果拷貝到目標矩形中。如果模板要與結果組合,則在擴展後的位圖拷貝到目標矩形後才組合。

   當正在記錄一個增強型圖元文件時,如果源設備環境標識爲一個增強型圖元文件設備環境,那麼會出現錯誤(函數返回FALSE)。

   如果指定的光柵操作需要畫刷,那麼系統使用當前已被選入到目標DC的畫刷。

   目標座標使用當前爲目標DC指定的轉換方式進行轉換。源座標則使用當前爲源DC指定的轉換方式進行轉換。

   如果源轉換髮生了旋轉或剪接,將產生錯誤。

   如果目標位圖、源位圖和模板位圖的顏色格式不一致,StretchBlt會轉換源位圖和模板位圖以匹配目標位圖。

   如果要將黑白位圖轉換爲彩色位圖,它將背景色設置爲白位(1),前景色設置爲黑位(0)。如果要將彩色位圖轉換爲黑白位圖,函數設置與背景色匹配的像素爲白(1),其它像素爲黑(0),用到了帶顏色的設備上下文中的前景色和背景色。

   如果nWidthSrc和nWidthDest或者nHeightSrc和nHeightDest大小不同,StretchBlt創建一個位圖鏡像。

       如果nWidthSrc和nWidthDest不同,函數按照X軸創建位圖鏡像。

       如果nHeightSrc和nHeightDest 不同,函數按照Y軸創建位圖鏡像。

   Windows CE 1.0 和 1.01 不支持鏡像。

   並不是所有設備都支持StretchBlt,調用GetDeviceCaps獲取支持。

   如果hdc指定鏡像DC,水平座標將從右到左增加,而不是從左到右。

   更多關於從右到左向位塊傳輸顯示信息(For information about blitting to displays with right-to-left orientations),參見 Creating Bitmaps

 

SetSTretchBltMode 

 

該函數可以設置指定設備環境中的位圖拉伸模式。

原型:

int SetSTretchBltMode(HDC hdc, int iStretchMode);

參數:

hdc:設備環境句柄。

iStretchMode:指定拉伸模式。它可以取下列值,這些值的含義如下:

描述

BLACKONWHITE

對消除的和存在的像素的顏色值進行布爾AND(與)操作運算。如果該位圖是單色位圖,那麼該模式以犧牲白色像素爲代價,保留黑色像素點。

COLORONCOLOR

刪除像素。該模式刪除所有消除的像素行,不保留其信息。

BILINEAR

XY軸方向線性修改顏色值。該模式僅當縮放源圖像時工作,剪切時無效。該模式只在SRCCOPYSRCAND, andSRCPAINT 光柵操作下工作。如果設置爲其他光柵操作符,COLORONCOLOR 模式將被用於大於1bpp位深的位圖,BLACKONWHITE 模式將被用於1bpp位深的位圖。

 

返回值:

   如果函數執行成功,那麼返回值就是先前的拉伸模式,如果函數執行失敗,那麼返回值爲0。若想獲得更多錯誤信息,請調用GetLastError函數,該值可能爲下面的值

意義

ERROR_INVALID_PARAMETER

一個或多個輸入參數非法

 

說明:

   拉伸模式在應用程序調用StretchBit函數時定義系統如何將位圖的行或列與顯示設備上的現有像素點進行組合。

   BLACKONWHITE(STRETCH_ANDSCANS)和WHITEONBLACK(STRETCH_ORSCANS)模式典型地用來保留單色位圖中的前景像素。COLORONCOLOR(STRETCH_DELETESCANS)模式則典型地用於保留彩色位圖中的顏色。

   HALFTONE模式比其他三種模式需要對源圖像進行更多的處理,也比其他模式慢,但它能產生高質量圖像,也應注意在設置HALFTONE模式之後,應調用SetBrushOrgEx函數以避免出現刷子沒對準現象。

   根據設備驅動程序的功能不同,其他一些拉伸模式也可能有效。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章