該函式將DIB中矩形區域內像素使用的顏色數據拷貝到指定的目標矩形中。如果目標矩形比源矩形大小要大,那么函式對顏色數據的行和列進行拉伸,以與目標矩形匹配。如果目標矩形大小要比源矩形小,那么該函式通過使用指定的光柵操作對行列進行壓縮。
基本介紹
- 中文名:StretchDIBits
- hdc:指向目標設備環境的句柄
- Windows NT:3.1及以上版本
- Windows:95及以上版本
函式原型,參數,
函式原型
int StretchDIBits(HDC hdc, int XDest , int YDest , int nDestWidth, int nDestHeight, int XSrc, int YSrc, int nSrcWidth, int nSrcHeight, CONST VOID *lpBits, CONST BITMAPINFO * lpBitsInfo, UINT iUsage, DWORD dwRop);
參數
hdc:指向目標設備環境的句柄。
XDest:指定目標矩形左上角位置的X軸坐標,按邏輯單位來表示坐標。
YDest:指定目標矩形左上角的Y軸坐標,按邏輯單位表示坐標。
nDestWidth:指定目標矩形的寬度。
nDestHeight:指定目標矩形的高度。
XSrc:指定DIB中源矩形(左上角)的X軸坐標,坐標以像素點表示。
YSrc:指定DIB中源矩形(左上角)的Y軸坐標,坐標以像素點表示。
nSrcWidth:按像素點指定DIB中源矩形的寬度。
nSrcHeight:按像素點指定DIB中源矩形的高度。
lpBitsInfo:指向BITMAPINFO結構的指針,該結構包含有關DIB方面的信息。
iUsage:表示是否提供了BITMAPINFO結構中的成員bmiColors,如果提供了,那么該bmiColors是否包含了明確的RGB值或索引。參數iUsage必須取下列值,這些值的含義如下:
DIB_PAL_COLORS:表示該數組包含對源設備環境的邏輯調色板進行索引的16位索引值。
DIB_RGB_COLORS:表示該顏色表包含原義的RGB值,若想了解更多的信息,請參考下面備註一節。
dwRop:指定源像素點、目標設備環境的當前刷子和目標像素點是如何組合形成新的圖像。若想了解更多信息,請參考下面的備註一節。
返回值:如果函式執行成功,那么返回值是拷貝的掃描線數目,如果函式執行失敗,那么返回值是GDI_ERROR。
Windows NT:若想獲取更多錯誤信息,請調用GetLastError函式。
Windows 98、Windows NT 5.0及以後版本:如果設備驅動程式不支持傳送給StretchDIBits的JPEG檔案格式的圖像,則該函式將失敗,並返回GEI_ERROR。
備註:自底向上的DIB的起始點為左下角,自頂向下DIB的起始點為左上角。
如果nSrcWidth和nDestWidth參數的符號不同。或是nSrcHeight和nDesHeight參數的符號不同。那么函式StretchDIBits將創建點陣圖的鏡像。如果NsrcWidth和NdestWidth符號不同,那么函式將沿著X軸創建點陣圖鏡像。如果NsrcHeight和NdestHeight符號不同,那么函式將沿著Y軸創建點陣圖鏡像。
如果BITMAPINFOHEADER結構中的成員biCompression為BI_JPEG,那么參數lpBits指向的是一個包含JPEG圖像的緩衝區。BITMAPINFOHEADER結構中的biSizeImage成員指定了該緩衝區的大小。參數iUsage必須設為DIB_RGB_COLORS。dwRop必須設為SRCCOPY。
為確保列印時可以有正確的圖元檔案假脫機操作。應用程式應在調用StretchDIBits函式之前調用CHECKJPEGFORMAT轉義符,以確認印表機識別JPEG圖像。
ICM:執行顏色管理。如果指定的BITMAPINFO結構中的bmiHeader不包含BITMAPV4HEADER或BITMAPV5HEADER,那么當前設備環境的顏色配置(profile)被用作源顏色配置(profile)。如果沒有顏色檔案,那么就使用RGB。如果指定的BITMAPINFO結構中的成員bmiHeader包含了BITMAPV4HEADER或BITMAPV5HEADER,那么將把點陣圖標頭中指定的顏色配置(profile)用作源顏色配置。
速查:Windows NT:3.1及以上版本;Windows:95及以上版本;Windows CE:不支持;頭檔案:wingdi.h:庫檔案:gdi32.lib。