StretchBlt
StretchBlt
StretchBlt是一個函數,函數從源矩形中複製一個點陣圖到目標矩形,必要時按目標設備設置的模式進行圖像的拉伸或壓縮。StretchBlt函數將pSrcDC源設備中的點陣圖移動到目標矩形,該矩形用成員函數正在調用的設備上下文來表示。PATPAINT:通過使用布爾OR(或)操作符將源矩形區域取反后的顏色值與特定模式的顏色合併。xSrc,ySrc,nSrcWidth和nSrcHeight 參數定義了源矩形的左上角和尺寸。StretchBlt函數在內存中對源點陣圖進行擴展或壓縮,然後將結果拷貝到目標矩形中。
BOOL StretchBlt(HDC hdcDest, int nXOriginDest, int nYOriginDest, int nWidthDest, int nHeightDest, 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:指定源矩形的高度,按邏輯單位表示高度。
下面列出了一些常見的光柵操作代碼:
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有關的顏色填充目標矩形區域。(對於預設物理調色板來說,這個顏色就是白色)。
BOOL StretchBlt( int x, int y, int nWidth, int nHeight, CDC* pSrcDC, int xSrc, int ySrc, int nSrcWidth, int nSrcHeight, DWORD dwRop );
x:邏輯單元x軸左上角坐標;
y:邏輯單元y軸左上角坐標;
nWidth:設備矩形寬度;
nHeight:設備矩形高度;
pSrcDC:源設備上下文;
xSrc :源矩形x軸左上角坐標;
ySrc:源矩形y軸左上角坐標;
Specifies the x-coordinate (in logical units) of the upper-left corner of the source rectangle.
nSrcWidth:源矩形寬度;
nSrcHeight:源矩形高度
dwRop:指定要進行的光柵操作。(和第一個函數一樣標示)
速查:Windows NT:3.1及以上版本;Windows:95及以上版本;Windows CE:1.0及以上版本;頭文件:wingdi.h:庫文件:gdi32.lib。
將源矩形中的點陣圖拷貝到目標矩形中,如果有必要,可以擴展或壓縮該點陣圖使其與目標矩形尺寸吻合。函數使用目標設備上下文(由SetStretchBltMode設置)的擴展模式來決定如何擴展或壓縮點陣圖。StretchBlt函數將pSrcDC源設備中的點陣圖移動到目標矩形,該矩形用成員函數正在調用的設備上下文來表示。xSrc,ySrc,nSrcWidth和nSrcHeight 參數定義了源矩形的左上角和尺寸。x,yc,nWidth和nHeight參數定義了目標矩形的左上角和尺寸。dwRop指定的光柵操作模式說明了源點陣圖與目標設備上已經存在的點陣圖是如何組合的。如果nSrcWidth和nWidth或nSrcHeight和nHeight的符號不同,StretchBlt將為點陣圖創建一個鏡像。如果nSrcWidth和nWidth符號不同,函數沿X軸創建鏡像。如果nSrcHeight和nHeight符號不同,函數沿Y軸創建鏡像。StretchBlt函數在內存中對源點陣圖進行擴展或壓縮,然後將結果拷貝到目標矩形中。如果模板要與結果組合,則在擴展后的點陣圖拷貝到目標矩形后才組合。如果用到畫刷,應使用目標設備上下文中選定的畫刷。目標坐標根據目標設備上下文來轉換,源坐標根據源設備上下文來轉換。如果目標點陣圖、源點陣圖和模板點陣圖的格式不一致,StretchBlt使模板與源點陣圖匹配模板點陣圖格式,轉換中會使用到目標設備上下文中的前景色和背景色。如果要將黑白點陣圖轉換為彩色點陣圖,它將背景色設置為白位(1),前景色設置為黑位(0)。如果要將彩色點陣圖轉換為黑白點陣圖,函數設置與背景色匹配的像素為白(1),其它像素為黑(0),用到了帶顏色的設備上下文中的前景色和背景色。不是所有的設備都支持StretchBlt函數。調用帶RASTERCAPS索引的GetDeviceCaps 函數來決定是否支持StretchBlt。並檢驗為返回給RC_STRETCHBLT標記的值。