StretchDIBits用法

轉自:http://blog.csdn.net/giantchen547792075/article/details/6996011

StretchDIBits 函數把DIB、JPEG、PNG圖像中一矩形區域內的像素顏色數據複製到指定的目標矩形裏。如果目標矩形大於源矩形,此函數將拉伸的行和列以適合目標矩形的顏色數據。如果目標矩形小於源矩形,則此函數使用指定的光柵操作壓縮的行和列。(Note:整幅圖像都會被顯示在一個矩形區域中,這個矩形區域不許顯示原圖全貌)

語法:
int StretchDIBits (HDC hdc,int XDest,YDest,int int nDestWidth,int nDestHeight,int XSrc,int YSrc,int nSrcWidth,int nSrcHeight,const VOID __in * lpBits,__in const BITMAPINFO * lpBitsInfo,__in UINT iUsage,__in dword = dwRop) ;
參數:
hdc [in](Note:不知道這[in]代表什麼暫且認爲它並不重要吧)
目標設備上下文的句柄。
XDest [in]
角點的 x 座標,以邏輯單位的目標矩形的左上角。
YDest [in]
Y 座標,邏輯單位上的目標矩形的左上角。
nDestWidth [in]
邏輯單位,目標矩形的寬度。
nDestHeight [in]
邏輯單位,目標矩形的高度。
XSrc [in]
角的 x 座標,以像素爲單位,源矩形圖像中。
YSrc [in]
Y 座標,以像素爲單位,源矩形圖像中。
nSrcWidth [in]
寬度,以像素爲單位,源矩形圖像中。
nSrcHeight [in]
高度以像素爲單位,源矩形圖像中。
lpBits [in]
圖像的位,作爲字節數組存儲的指針。有關詳細信息,請參見備註部分。
lpBitsInfo [in]
指向包含DIB 相關信息的 BITMAPINFO 結構的指針。
iUsage [in]
指定是否提供的 BITMAPINFO 結構的 bmiColors 成員,以及若然,是否 bmiColors 包含顯式的紅、 綠、 藍 (RGB) 值或索引。IUsage 參數必須是下列值之一。
 
 
備註
DIB_RGB_COLORS
顏色表中包含文本的 RGB 值。
DIB_PAL_COLORS
該數組包含到源設備上下文的邏輯調色板的 16 位索引。

 

dwRop [in]
指定的方式組合在一起以形成新的圖像源像素、 目標設備上下文的當前畫刷和目標像素。有關詳細信息,請參閱下面的備註部分。
返回值

如果函數成功,則返回值是掃描複製的行數。請注意,此值可以爲負的鏡像內容。

如果該函數失敗,或者沒有掃描行被複制,則返回值爲 0。

如果驅動程序不支持 JPEG 或 PNG 文件圖像傳遞給 StretchDIBits,該函數將失敗並返回 GDI_ERROR。如果發生故障,應用程序必須依靠自己的 JPEG 或 PNG 支持,將圖像的解壓縮成位圖,然後將該位圖傳遞給 StretchDIBits。

 

備註
自底向上 DIB 的起始位置是左下角 ;自上而下 DIB 的起始位置是左上角。
 
StretchDIBits 創建一個位圖鏡的像圖像,如果nSrcWidth 和 nDestWidth 這兩個參數或 nSrcHeight 和 nDestHeight這兩個參數的符號不同。NSrcWidth 和 nDestWidth 的符號不同,那麼該函數創建一個沿 x 軸鏡像的位圖圖像。NSrcHeight 和 nDestHeight 的符號不同,那麼該函數創建沿 y 軸鏡像的位圖圖像。
 
此函數允許 JPEG 或 PNG 圖像作爲源圖像傳入。每個參數如何使用仍保持不變,除非:
  • 如果 BITMAPINFOHEADER 的 biCompression 成員是 BI_JPEG 或 BI_PNG,lpBits 指向包含 JPEG 或 PNG 圖像單獨的緩衝區。BITMAPINFOHEADER 結構的 biSizeImage 成員指定緩衝區的大小。IUsage 參數不得不被設置爲 DIB_RGB_COLORS。DwRop 參數不得不被設置爲 SRCCOPY。
  • 爲確保打印時有適當的圖元文件緩存池,在調用 StretchDIBits 之前,應用程序必須調用 CHECKJPEGFORMAT 或 CHECKPNGFORMAT 轉義以驗證打印機可分別識別 JPEG 或 PNG 圖像。
ICM: 如果通過使用 SetICMMode 的iEnableICM 參數設置爲 ICM_ON的調用啓用了色彩管理,那麼顏色管理就會執行。如果由 lpBitsInfo 指定的位圖有一指定伽馬和成員終結點成員的BITMAPV4HEADER結構或一個指定 profileData 和 profileSize 的成員或伽馬和成員終點結成員的 BITMAPV5HEADER 然後該位圖的所有像素將被視爲表達在由這些成員所述的色彩空間種而不是設備上下文的源顏色空間中。
發佈了30 篇原創文章 · 獲贊 31 · 訪問量 35萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章